当前位置: 首页 > news >正文

每日一题——LeetCode1160.拼写单词

方法一 个人方法:

先统计chars里每个字符出现的次数,再对words里每个字符串统计每个字符出现的字符,当:

1、字符串里出现chars里没有的字符

2、字符串里某个字符出现的次数大于该字符在chars里出现的次数

以上两种情况则不符合题意,其他的则为满足的单词,统计他们的长度并累加

 var arr=[],arr2=[],flag=true,res=0for(const char of chars){if(arr[char]>0){arr[char]++}else{arr[char]=1}}for(const word of words){for(const char of word){if(arr[char]===undefined){flag=falsebreak}if(arr2[char]>0){arr2[char]++if(arr2[char]>arr[char]){flag=falsebreak}}else{arr2[char]=1}}if(flag){res+=word.length}flag=truearr2=[]}return res
};

统计chars里字符的出现次数也可以用map():

var countCharacters = function(words, chars) {var arr=[],flag=true,res=0var map = new Map()for(const char of chars){map.has(char)? map.set(char,map.get(char)+1):map.set(char,1)}for(const word of words){for(const char of word){if(!map.has(char)){flag=falsebreak}if(arr[char]>0){arr[char]++if(arr[char]>map.get(char)){flag=falsebreak}}else{arr[char]=1}}if(flag){res+=word.length}flag=truearr=[]}return res
};

 消耗时间和内存情况:

方法二 

1、word要求由chars拼写且字符不能重复使用,那么word.length<=chars.length

2、chars不能被修改,但是可以创建chars的副本,可以修改副本来达到比较,匹配一个字符就在副本里删除一个字符,保证字符只能使用一次

var countCharacters = function (words, chars) {return words.filter( word => word.length <= chars.length).filter(word => {let c = charsfor (let i = 0; i < word.length; i++) {let w_s = word[i]let c_i = c.indexOf(w_s)if (c_i === -1) {return false} else {c = c.replace(w_s, '')continue}}return true}).join('').length
};

消耗时间和内存情况:

http://www.lryc.cn/news/279755.html

相关文章:

  • 物联网协议Coap之Core和NetWork简介
  • Java SE入门及基础(10)
  • Docker五部曲之二:Docker引擎
  • 简单说一下原型与原型链
  • 11Spring IoC注解式开发(上)(元注解/声明Bean的注解/注解的使用/负责实例化Bean的注解)
  • k8s 部署Jenkins项目
  • #每日一题#力扣#2085.统计出现过一次的公共字符串
  • Python系列(1):简洁优雅,功能强大的编程语言
  • HarmonyOS应用开发学习笔记 arkTS自定义弹窗(CustomDialog)简单使用 arkTS弹出框回调、监听
  • RabbitMQ(六)消息的持久化
  • mybatisplus配置
  • node-sass@4.7.2 postinstall: `node scripts/build.js`
  • pyDAL一个python的ORM(9) pyDAL的嵌套查询
  • 融资项目——EasyExcel操作Excel文件
  • OAI openair3-NAS-UE-EMM代码解读(续)
  • SQL-条件查询与聚合函数的使用
  • Qt移植曲线显示
  • 基于springboot生鲜交易系统源码和论文
  • vue中鼠标拖动触发滚动条的移动
  • 1、理解Transformer:革新自然语言处理的模型
  • Acwing847 图中点的层次(bfs)
  • windows11通过虚拟机安装Ubuntu20.04
  • 时序预测 | Matlab实现EEMD-SSA-BiLSTM、EEMD-BiLSTM、SSA-BiLSTM、BiLSTM时序预测对比
  • Android14之解决Pixel手机联网出现感叹号(一百八十)
  • Vmware虚拟机问题解决方案 运行虚拟机系统蓝屏 运行虚拟机时报错VT-x
  • uni-app中轮播图实现大图预览
  • 了解什么是UV纹理?
  • 【蓝桥备赛】wzy的数组Ⅱ——简单莫队问题
  • 学习Qt笔记
  • pymssql 报错误解决办法:20002, severity 9