编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""
。
解决方法:纵向比较
通过列优先的方式,通过charAt()方法比较每个字符串的每一列值。因为只要有其中一个不同说明就已经得到了最长前缀,这时用String类的substring()方法返回数值即可。
class Solution {
public String longestCommonPrefix(String[] strs) {
if(strs==null||strs.length==0){
return "";
}
int rows = strs.length;
int cols = strs[0].length();
for(int i=0;i<cols;i++){
char tmp = strs[0].charAt(i); //单个字符用char
for(int j=1;j<rows;j++){ //从第二行开始扫描
if(strs[j].length()==i || strs[j].charAt(i)!=tmp){ /*第一个判断条件是为了防止字符串小于当前的i值,charAt(i)也就不能取值。如flower 、fl、 - >当i=2时,发现fl长度也是2,所以最长前缀也只能是2,故直接返回。*/
return strs[0].substring(0,i);
}
}
}
return strs[0];
}
}
ps:java String类
charAt(i):返回字符串i位置的字符
substring(a , b):截取字符串。