LeetCode14 最长公共前缀

70 阅读1分钟

解题思路

  1. 先看题:注意-提示中告诉我们了不需考虑空数组的情况,也不需考虑大小字母比较的情况,全部为小写。
  2. 思路:示例1中三个的前两个全部为fl,这时候我第一反应是遍历他们,但是纯粹遍历,不对比字母无法解题,因此我在想怎么才能让这些元素进行对比,那必然要拿出一个标杆出来。
  3. 假如拿出第一个元素为标杆,从第一个字母开始比较,剩余元素和第一个元素对比相同字母,如果发现第一个字母就不相同,此时返回空字符串就行了。如果相同则循环遍历第二个字母,直到其中一个不想同了,那直接返回相同的前缀就可以了。

image.png

/**
 * @param {string[]} strs
 * @return {string}
 */
var longestCommonPrefix = function(strs) {
    let output = ''
    const firstElement = strs[0]
    for(let i=0; i<firstElement.length; i++) {
        const letter1 = firstElement[i]
        let flag = true
        for(let j=1; j<strs.length; j++) {
            const word = strs[j]
            const letter2 = word[i]
            if(letter1 !== letter2) {
                flag = false
                break
            }
        }
        if(flag) {
            output = output + firstElement[i]
        } else {
            break
        }
        
    }
    return output
};