题目
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
示例
输入:strs = ["flower","flow","flight"]
输出:"fl"
输入:strs = ["dog","racecar","car"]
输出: ""
解释:输入不存在公共前缀
提示:
1 <= strs.length <= 200
0 <= strs[i].length <= 200
strs[i] 仅由小写英文字母组成
解决方案
如果str为数组中所有元素的公共前缀,那么它必定是任意两个元素的公共前缀,
取第一个元素作为最初的公共前缀,遍历之后的所有元素,
将公共前缀与第二个元素的公共前缀作为新的功能前缀,再找与第三个元素的公共前缀。。。
直到遍历完所有的元素或者公共前缀减少为空字符串。
class Solution {
public String longestCommonPrefix(String[] strs) {
String resultStr = strs[0];
Iterator<String> iterator = Arrays.stream(strs).iterator();
StringBuilder stringBuilder = new StringBuilder();
while(iterator.hasNext() && !"".equals(resultStr)) {
String str = iterator.next();
int length = resultStr.length() < str.length() ? resultStr.length() : str.length();
stringBuilder.setLength(0);
for (int i = 0; i < length; i++) {
if(str.charAt(i) != resultStr.charAt(i)) {
break;
}
stringBuilder.append(str.charAt(i));
}
resultStr = stringBuilder.toString();
}
return resultStr;
}
}