编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。
示例 1:
输入:strs = [“flower”,“flow”,“flight”]
输出:“fl”
示例 2:
输入:strs = [“dog”,“racecar”,“car”]
输出:""
解释:输入不存在公共前缀。
官方给出了好几种方案,目前刚开始刷题就看懂最简单的方案,想要看懂代码,就得先理解题目的意思。还有就是下标, 比如说0下标代表的就是flower,然后定义了一个临时变量去逐个往后对比,每次都拿出前两个对比后的结果,如果在中途发现最长公共前缀变为空的话直接返回即可。
主要的函数里用到一个java的字符串方法charAt,就是返回指定位置的字符,然后再用substring截取出来返回,接着在第一个函数里往后比较
class Solution {
public String longestCommonPrefix(String[] strs) {
if (strs == null || strs.length == 0) {
return "";
}
String prefix = strs[0];
int count = strs.length;
for (int i = 1; i < count; i++) {
prefix = longestCommonPrefix(prefix, strs[i]);
if (prefix.length() == 0) {
break;
}
}
return prefix;
}
public String longestCommonPrefix(String str1, String str2) {
int length = Math.min(str1.length(), str2.length());
int index = 0;
while (index < length && str1.charAt(index) == str2.charAt(index)) {
index++;
}
return str1.substring(0, index);
}
}