Longest Common Prefix
Write a function to find the longest common prefix string amongst an array of strings.
问题分析:
(1) 对于这个问题,首先处理特殊字符串,对于[] 和[""]等字符串要优先处理,输出“”,对于字符串数组中只有一个字符串的情况,那么它自己本身就是最长前缀,直接输出即可。
(2)找出字符串数组中字符串长度最低的字符串,依次作为循环判断终止条件,然后通过循环两两字符串进行对比,每次对比中,字符相同则i++,否则,i--;
(3)特别要注意,什么时候要跳出循环,当i++发现前缀不相等,当i--发现字符串相等的时候,则就要跳出本次循环。在跳出循环后,一定要记住,将i--;
Solution:
public String longestCommonPrefix(String[] strs) {
if(strs.length == 0)
return "";
int i = 1, j=0;
int flag = 0;
int min_len = strs[0].length();
for(j = 0; j < strs.length; ++j){
if(strs[j].length() < min_len){
min_len = strs[j].length();
}
}
if(min_len == 0)
return "";
for(j = 0; j < strs.length-1; ++j){
while( i <= min_len && i > 0){
if((strs[j].substring(0, i)).equals(strs[j+1].substring(0, i))){
i++;
if(flag == 1)
break;
}else{
i--;
flag = 1;
}
}
if(i==0)
break;
else if(i > min_len || flag == 1)
i--;
}
return strs[0].substring(0, i);
}
Conclusion:
AC:10ms
虽然击败了83.3%的java算法,但是和C++比起来还是差很多。总之,java一直都是最慢的语言!心累!