D86748.ShortestCompletingWord题目链接748.ShortestCompletingWord题目分析从给定的字符串中提取字符。从另一个给定的单词数组中,选择提取字符的出现次数等于或大于该单词的单词。如果出现次数相同,则返回第一个匹配的单词。假设结果必须存在。思路是先提取字符,转为小写,统计字符出现的次数。遍历数组中的每个单词,首先统计单词中每个字符出现的次数。同时遍历前面计算出的字符出现次数,如果当前单词中没有出现任何字符,则可以舍弃当前单词。如果出现次数小于之前计算的出现次数,也可以排除。如果有匹配的词,先判断原来保存的词的长度是否短。短封面,长丢弃。最终代码='a'&&$val<='z')||($val>='A'&&$val<='Z')){如果(!isset($plateCounts[$val])){$plateCounts[$val]=0;}$plateCounts[$val]+=1;}};$匹配=空;foreach($wordsas$word){$wordCounts=array_count_values(str_split($word));$失败=假;foreach($plateCountsas$char=>$amount){if(!isset($wordCounts[$char])){$failed=true;休息;}if($amount>$wordCounts[$char]){$failed=true;休息;}}if(!$failed){if(is_null($match)){$match=$word;}else{if(strlen($match)>strlen($word)){$match=$word;}}}}返回$匹配;}}如果您觉得本文对您有用,欢迎用爱心集资
