编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""
。
示例 1:
输入:strs = ["flower","flow","flight"]
输出:"fl"
示例 2:
输入:strs = ["dog","racecar","car"]
输出:""
解释:输入不存在公共前缀。
思路
- prefixStr = strs[0] 作为题目结果
- 然后同其他str去比较,如果不是其他字符串的公共前缀,就将prefixStr 末尾左移一位,这样一直判断,直到符合条件
- 同理继续判断下一个字符串
关键代码
public String longestCommonPrefix(String[] strs) {
// 输入:strs = ["flower","flow","flight"]
// 输出:"fl"
String prefixStr = "";
if (strs == null || strs.length == 0) return prefixStr;
prefixStr = strs[0];
for (int i = 1; i < strs.length; i++) {
while (strs[i].indexOf(prefixStr, 0) != 0) {
prefixStr = prefixStr.substring(0, prefixStr.length() - 1);
}
}
return prefixStr;
}
while循环中的条件判断需要注意,要能体现prefixStr是需要被判断字符串的前缀
strs[i].indexOf(prefixStr, 0) != 0
不等于0也说明不是前缀,还有其他字符串。不符合条件。