leetcode 14 最长公共前缀 简单难度
//编写一个函数来查找字符串数组中的最长公共前缀。
//
// 如果不存在公共前缀,返回空字符串 ""。
//
//
//
// 示例 1:
//
//
//输入:strs = ["flower","flow","flight"]
//输出:"fl"
//
//
// 示例 2:
//
//
//输入:strs = ["dog","racecar","car"]
//输出:""
//解释:输入不存在公共前缀。
//
//
//
// 提示:
//
//
// 0 <= strs.length <= 200
// 0 <= strs[i].length <= 200
// strs[i] 仅由小写英文字母组成
题目读一遍下来,首先想到的是既然是公共前缀,所以假定取出str1,str2有最长公共前缀str,如果str是给定字符串数组的公共前缀,则返回str,如果不是,则删除str最后一个字符后继续判断。
//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
public String longestCommonPrefix(String[] strs) {
int len = strs.length;
//边界条件 只有strs[0]
if(len == 1){
return strs[0];
}
String str = "";
int charLen = strs[0].length()<strs[1].length()?strs[0].length():strs[1].length();
int j=0;
//找出 strs[0],strs[1]最长公共前缀
while(j < charLen){
str += strs[0].charAt(j);
j++;
if(!strs[1].startsWith(str)){
str = str.substring(0,str.length()-1);
break;
}
}
//如果不存在最长公共前缀
if("".equals(str)){
return str;
}
//边界条件 只有strs[0],str[1]
if(len == 2){
return str;
}
for(int i = 2;i<len;i++){
if(!strs[i].startsWith(str)){
//查找str和strs[i]的最长公共前缀
str = str.substring(0,str.length()-1);
while (!strs[i].startsWith(str)){
str = str.substring(0,str.length()-1);
//如果不存在最长公共前缀
if("".equals(str)){
return str;
}
}
}
}
return str;
}
}
//leetcode submit region end(Prohibit modification and deletion)
提交后可以证明此思路是正确的,但自己在写代码的时间上花费的时间还是要40分钟左右。
说实在的,写代码的速度还是太慢了,可能跟性格有关,求稳,还有就是代码写少了!!!!