0815 最长公共前缀

119 阅读1分钟

问题

编写一个函数来查找字符串数组中的最长公共前缀。

如果不存在公共前缀,返回空字符串 ""。

例如

输入: ["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为‘’,则表示没有公共的,返回‘’)