力扣练习题——最长公共前缀
package com.shengda.Demo0Likou; public class Demo14 { public static void main(String[] args) { Solution s = new Solution(); String[] strs = new String[]{ "ab","ab"}; String str = s.longesCommonPrefix(strs); System.out.println(str); } } class Solution{ public String longesCommonPrefix(String[] strs) { if(strs.length == 0){ return ""; } int j = 0; String str = strs[0]; // 查找到最短的字符串 for (int i = 0; i < strs.length; i++) { if ("".equals(strs[i])) return ""; // 如果有一个字符串为空,就直接返回为"" if (strs[i].length()<str.length()) str = strs[i]; // 将比自身短的字符串赋值给str } while (getCommon(strs,str,j)) { // 如果返回值为true就j++, 这里通过j来记录有几个相同的字符 j++; } return str.substring(0,j); // 将字符串进行切割返回 } // 通过此方法来比较有字符 private boolean getCommon(String[] strs, String str,int j) { for (int i = 0; i < strs.length; i++) { // 遍历所有字符串 /* * j == str.length()表示如果j等于最短的字符串的长度+1,如果此时不结束,就会报错,因为str字符串没有第j个字母,所以这时直接返回false让while循环结束 * strs[i].charAt(j) != str.charAt(j) j表示比较的是第几个字母,如果都相同,就会返回true,在while循环里j就会加一,然后遍历第二个字母。 * */ if (j == str.length() || strs[i].charAt(j) != str.charAt(j)) return false; } return true; } }
上一篇:
92天倒计时,蓝桥杯省赛备赛攻略来啦~
下一篇:
LeetCode 399 除法求值 题解