题目介绍
解题思路
当strs长度为1时,返回的是strs[0]
自身。不管它本身是不是空字符串。
在strs长度>1的时候, 以下来画图举例说明:
解题代码
/**
* @param {string[]} strs
* @return {string}
*/
var longestCommonPrefix = function(strs) {
if(strs.length === 1) {
return strs[0];
}
// 获取所有元素中的最短长度
// 目的是 只比较最短长度内的字符, 超出的字符不做比较
var _len = strs[0].length;
var minLen = 0;
for(let v of strs) {
minLen = Math.min(v.length, _len)
}
// 获取公共字符串
var preStr = strs[0].slice(0, minLen);
var commonStr = '';
var _strs = strs.slice(1);
for(let v of _strs) {
for(var i = 0; i < preStr.length; i++) {
if(v[i] === preStr[i]) {
commonStr += v[i];
} else { // 只要字符不相同,就跳出该循环
break;
}
}
// 只要其中两个字符串没有公共前缀,
// 就立即结束循环,并返回空字符串作为最终结果
if(commonStr.length === 0) {
return '';
}
preStr = commonStr;
commonStr = ''; // 每次完成一轮循环后,需要清空接收公共前缀的值
}
return preStr;
};