博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Leetcode PHP题解--D86 748. Shortest Completing Word
阅读量:5865 次
发布时间:2019-06-19

本文共 1289 字,大约阅读时间需要 4 分钟。

D86 748. Shortest Completing Word

题目链接

题目分析

从给定的一个字符串中提取字符。从另一个给定的单词数组中,选择出所提取的字符在单词中出现次数相等或大于的单词。若出现次数相同,则返回第一个符合条件的单词。

假定结果必定存在。

思路

先提取字符,转换成小写,并计算字符出现的次数。

遍历数组中的每一个单词,先计算单词中每个字符出现的次数。

同时,遍历前面计算的字符出现次数,若有任何一个字符没有在当前单词中没出现,那么可以抛弃当前单词。

若出现次数小于前面计算的出现次数,也可以排除。

若出现了符合的单词,先判断和原先保存的单词长度是否短。

短则覆盖,长则抛弃。

最终代码

='a' && $val<='z')||($val>='A' && $val<='Z')){ if(!isset($plateCounts[$val])){ $plateCounts[$val] = 0; } $plateCounts[$val] += 1; } }; $match = null; foreach($words as $word){ $wordCounts = array_count_values(str_split($word)); $failed = false; foreach($plateCounts as $char => $amount){ if(!isset($wordCounts[$char])){ $failed = true; break; } if($amount > $wordCounts[$char]){ $failed = true; break; } } if(!$failed){ if(is_null($match)){ $match = $word; } else{ if(strlen($match)>strlen($word)){ $match = $word; } } } } return $match; }}复制代码

若觉得本文章对你有用,欢迎用资助。

转载于:https://juejin.im/post/5d030d19f265da1b6836b8e4

你可能感兴趣的文章
Android窗口机制(三)Window和WindowManager的创建与Activity
查看>>
Android 编译出错解决
查看>>
Android 打开WIFI并快速获取WIFI的信息
查看>>
【IOS开发】GDataXML解析XML
查看>>
Iptables
查看>>
GridView多行多列合并单元格(指定列合并)
查看>>
什么是DDOS攻击?怎么防御?
查看>>
状态模式(State Pattern)
查看>>
log4j日志框架学习
查看>>
function 与 => 的区别
查看>>
EXCEL自动撤销合并单元格并填充相应内容(转帖)
查看>>
Python3学习笔记10-条件控制
查看>>
黄聪:如何使用CodeSmith批量生成代码(原创系列教程)
查看>>
HDOJ---1421 搬寝室[DP]
查看>>
JS 中的== 与 ===
查看>>
ES6 - 收藏集 - 掘金
查看>>
13.11. this is incompatible with sql_mode=only_full_group_by
查看>>
Python Module_openpyxl_处理Excel表格
查看>>
css动画实现div内图片逆时针旋转
查看>>
CSS的工作过程
查看>>