
先取出第一个元素,让第二个元素和第一个元素比较得出公共的字符, 并将这个字符加入数组中,利用递归反复比较前后两个值,直到数组中只剩下一个元素,该元素则为最终结果
/**
* @param {string[]} A
* @return {string[]}
*/
var commonChars = function(A) {
if(A === null) return null;
// 思路: 先取出第一个元素,让第二个元素和第一个元素比较得出公共的字符, 并将这个字符加入数组中,
// 利用递归反复比较前后两个值,直到数组中只剩下一个元素,该元素则为最终结果
let res = [], iarray = A;
(function handleR(){
if(iarray.length === 1) return false;
let coms = ''
let str1 = iarray.shift();
let str2 = iarray.shift();
for(let i=0;i<str1.length;i++){
if (str2.indexOf(str1.substr(i,1)) > -1){
coms += str2[str2.indexOf(str1.substr(i,1))];
str2 = str2.replace(str2[str2.indexOf(str1.substr(i,1))], '');
// 这句话的意思是,将str1和str2比较后将str2中已存在的元素设为空,避免再次比较
}
}
res = [coms];
iarray.push(coms);
handleR();
})()
for(let i=0;i<res[0].length;i++){
res.push(res[0][i]);
}
res.shift();
return res;
};
网友评论