力扣练习题——最长公共前缀
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 除法求值 题解
