题目如下:
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。
自己的思路:
每次都是直接想到暴力求解,先遍历给定的字符串数组里面的每个字符串,然后依次对每一个字符比较是否相同,感觉这样的话时间复杂度就会非常的高,第二个思路就是把字符串放进栈里面,判断栈的内容是否相当,直到不同的时候截止。
大神思路:
这里看到一个比较巧妙的方法,利用了字符串对象的函数,直接简单解出了这道题,果然还是对这些函数不熟悉,需要补一补。
public static String longestCommonPrefix(String[] strs) {
int count = strs.length;
String prefix = "";
if(count != 0){
prefix = strs[0];
}
for(int i=0; i<count; i++){
//关键代码,不断的从后往前截取字符串,然后与之相比,直到startsWith()返回true
while(!strs[i].startsWith(prefix)){
prefix = prefix.substring(0, prefix.length()-1);
}
}
return prefix;
}
这里注意计算到最后的时候,如果没有匹配的前缀。应该返回空字符串,请思考一下这里会不会返回呢?