题目
思路
①有单词(数组)为空
②正常情况
使用变量ans为第一个单词(strs[0])作为公共前缀
与后面的单词一一对比改变ans的值
③两两相对为空
代码展示
/**
* @param {string[]} strs
* @return {string}
*/
var longestCommonPrefix = function(strs) {
if(strs.length == 0)
return "";
let ans = strs[0];
for(let i =1;i<strs.length;i++) {
let j=0;
for(;j<ans.length && j < strs[i].length;j++) {
if(ans[j] != strs[i][j])
break;
}
ans = ans.substr(0, j);
if(ans === "")
return ans;
}
return ans;
};
知识点
- for(;j<ans.length && j < strs[i].length;j++) {...}
需要满足两个条件,个人推测类似双指针(可能是错的如果大佬看到望指正)
Ⅰ j 作为ans的指针
Ⅱ j 作为对照单词的指针
- if(ans[j] != strs[i][j])
指针一一对应,如果字母不等则停止for(第i位的单词)的循环
下一步是更改ans的值,将ans与i+1位的单词进行for(j)的循环
多维数组:如何在 JavaScript 中操作二维数组 - DevPoint的文章 - 知乎 zhuanlan.zhihu.com/p/435742453
- ans = ans.substr(0, j);
抽取字符,从第0位到第j位的字母作为新的ans