原题:14. 最长公共前缀 - 力扣(LeetCode) (leetcode-cn.com)
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
示例 1:
输入:strs = ["flower","flow","flight"]
输出:"fl"
示例 2:
输入:strs = ["dog","racecar","car"]
输出:""
解释:输入不存在公共前缀。
提示:
0 <= strs.length <= 2000 <= strs[i].length <= 200strs[i]仅由小写英文字母组成
思路:首先想到的是暴力破解,取strs第一个元素作为公共前缀遍历字符,后续元素相应位置上的元素相等则继续,不等则返回前一次公共前缀,代码:
/**
* @param {string[]} strs
* @return {string}
*/
var longestCommonPrefix = function(strs) {
if (strs.length <= 1) return strs[0]
if (strs.includes('')) return ''
let [comonPrefix, ...restStr] = strs
let r = ''
for (let i in comonPrefix) {
const t = comonPrefix[i]
for (let j in restStr) {
const jt = restStr[j][i]
if (t !== jt) {
return r
}
if (j == restStr.length - 1) {
r += t
}
}
}
return r
};
竟然通过了!
用Map或者正则应该还有优化空间,时间复杂度o(n²),空间复杂度o(n),先到这吧,好困好困睡了睡了