问题
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
例如
输入: ["flower","flow","flight"]
输出: "fl"
输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存
输入: ["a"]
输出: "a"
解决
var romanToInt = function(strs) {
let start = strs.sort((a, b) => a.length - b.length)[0];
let contactStr = start;
console.log(start)
let result = '';
for(let i = 0; i < strs.length; i++) {
for(let j = 0; j < contactStr.length; j++) {
if(strs[i].startsWith(start)) {
result = start;
continue;
}else{
start = start.substring(0, start.length - 1);
if(!start.length) {
result = '';
}
}
}
}
return result;
}
解决思路
- 找到数组中最短的字符串(公共字符串的长度一定小于或等于最短字符串的长度)
- 复制一个最短字符串(后边会用)
- 循环数组(对比每一项);循环复制的字符串的长度(为了可以截取start后继续对比,否则会直接进行下一项的对比,不循环start是因为,start会越来越短)
- 判断每一项是否以start项打头
- 是:跳出此次循环,进行下一项的判断
- 否:截取start的(0, start.length - 1)项,并赋值给start,继续判断当前项是否以start打头,直到结果为‘是’,跳出循环进行下一项判断(如果随后start为‘’,则表示没有公共的,返回‘’)
- 判断每一项是否以start项打头
