编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。
示例 1:
输入: [“flower”,“flow”,“flight”]
输出: “fl”
示例 2:
输入: [“dog”,“racecar”,“car”]
输出: “”
解释: 输入不存在公共前缀。
说明:
所有输入只包含小写字母 a-z 。
思路
看到这种题第一想法就是暴力暴力暴力循环,从第一个字符串的第一个字符 开始取,然后第二个字符往数组循环比对。。。。。。这样我真的觉得我太傻13了。。。。。。
Array.sort()方法可以先对字符串数组中字符串进行排序,按照字母的顺序,然后最长的在后面。
这样排完序,只用和最后一个字符串比较,取出相同的部分就行了。。。。。。。。。。。。。
class Solution {
public String longestCommonPrefix(String[] strs) {
if (strs.length == 0){
return "";
}
if (strs.length == 1){
return strs[0];
}
Arrays.sort(strs);
StringBuilder sb = new StringBuilder("");
for (int i = 0; i < strs[0].length(); i++) {
if (strs[0].charAt(i) == strs[strs.length - 1].charAt(i)){
sb.append(strs[0].charAt(i));
}else {
break;
}
}
return sb.toString();
}
}
学到了
记住了
加油