编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
示例 1:
输入:strs = ["flower","flow","flight"]
输出:"fl"
自己的想法:
把第一个字符串当作最长公共前缀,遍历其他的字符串进行比较
/**
* @param {string[]} strs
* @return {string}
*/
var longestCommonPrefix = function(strs) {
const s=strs[0];
let i;
for(i=0;i<s.length;i++){
let j;
for(j=1;j<strs.length;j++){
if(s[i]==strs[j][i]) ;
else break;
}
if(j!=strs.length) break;
}
const arr=new Array();
for(let j=0;j<i;j++){
arr.push(s[j]);
}
return arr.join('');
};
精选题解:
其实他也是拿第一个字串当作最长公共子串进行计算的,不过他所优的点是中间不断减少第一个子串的长度,当字串为空时可以返回
class Solution {
public String longestCommonPrefix(String[] strs) {
if(strs.length == 0)
return "";
String ans = strs[0];
for(int i =1;i<strs.length;i++) {
int j=0;
for(;j<ans.length() && j < strs[i].length();j++) {
if(ans.charAt(j) != strs[i].charAt(j))
break;
}
ans = ans.substring(0, j);
if(ans.equals(""))
return ans;
}
return ans;
}
}
作者:guanpengchn
链接:https://leetcode-cn.com/problems/longest-common-prefix/solution/hua-jie-suan-fa-14-zui-chang-gong-gong-qian-zhui-b/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。