每日一题——LeetCode1002
2024-01-01 15:29:23
方法一 个人方法:
将words里的字符串的每个字符出现的次数都转为键值对的形式:
循环求两两键值对数组的交集:
最后的交集就是重复出现的字符和次数,把键值对转回字符数组形式即可
思路对了,但是太复杂了,时间效率很低
var commonChars = function(words) {
var arr=[],newWords=[],union=[]
for(var item of words){
for(var char of item){
if(!arr[char]){
arr[char]=1
}else{
arr[char]++
}
}
newWords.push(arr)
arr=[]
}
arr=newWords[0]
for(var i=1;i<newWords.length;i++){
for( char of words[i]){
if(arr[char]){
union[char]=arr[char]<=newWords[i][char]?arr[char]:newWords[i][char]
}
}
arr=union
union=[]
}
for(char in arr){
for(i=0;i<arr[char];i++){
union.push(char)
}
}
return union
};
消耗时间和内存情况:
?方法二? 参考大佬的:
直接使用第一项或最后一项作为对比模板,查询相同字母
需要注意,找到一个相同字母后,需要去除这个字母,才能进行下一个字母的对比
var commonChars = function(words) {
let father = words.pop().split("");
return father.filter(e=>{
let flag = words.every(item=>{
return item.indexOf(e) > -1;
});
if(flag) {
words = words.map(d=>{
return d.replace(e,'');
})
}
return flag;
});
};
消耗时间和内存情况:
文章来源:https://blog.csdn.net/weixin_52878347/article/details/135324525
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!