题目要求:在一组字符串数组中找到最长的公共前缀。
思路一:遍历全部的字符串数组,找到相同的字母就保存起来,再进行下一轮的遍历。
思路二:对数组进行排序,按照长度由短到长进行排序,这样的话,只需要比较第一个字符串和最后一个字符串的前缀即可。
代码如下,Java:
- List item
- class Solution{
-
public String longestCommonPrefix(String[] strs){
-
int n=strs.length;
-
if(n==0) return "";
-
Arrays.sort(strs); //对数组进行排序
-
String first=strs[0];
-
String last=strs[n-1];
-
int limit=Math.min(first.length(),last.length()); //取较小数。取字符串长度的较小数作为循环的指标。
-
StringBuffer sb=new StringBuffer(); //建立一个空字符串,存放相同的前缀,于String的意义一样,不同的是,StringBuffer类偏重于对字符串的修改,比如添加.append(),具体用法查看<不坐仙山不坐禅>的博客
-
for(int i=0;i<limit;i++){
-
Iif(first.charAt(i)==last.charAt(i)){
-
sb.append(first.charAt(i));
-
}
-
else{
-
break;
-
}
-
}
-
return sb.toString;
-
}
-
}