最长公共前缀
题目(出自LeetCode)
-
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。 -
示例 1:
输入:strs = ["flower","flow","flight"]
输出:"fl" -
示例 2:
输入:strs = ["dog","racecar","car"]
输出:""
解释:输入不存在公共前缀。
题解
- 先把第一个字符串当作前缀pre
- 然后找出pre与第二个字符串的最长前缀,并赋值给pre,此时pre就是第一、二个字符串的公共前缀了
- 同理找出pre与第三个字符串的最长前缀,并赋值给pre,此时pre就是第一、二、三个字符串的公共前缀了
- 以此类归
代码(java)
class Solution {
public String longestCommonPrefix(String[] strs) {
if(strs==null||strs.length==0) return "";
String pre = strs[0];
for(int i=1; i<strs.length; ++i){
pre = findCommonPrefix(pre,strs[i]);
}
return pre;
}
public String findCommonPrefix(String pre, String str){
while(!str.startsWith(pre)){ //也可使用indexOf
pre = pre.substring(0,pre.length()-1);
}
return pre;
}
}
运行结果
- 执行用时:0 ms, 在所有 Java 提交中击败了100.00%的用户
- 内存消耗:36.3 MB, 在所有 Java 提交中击败了91.53%的用户