共计 942 个字符,预计需要花费 3 分钟才能阅读完成。
804. Unique Morse Code Words
题目链接
804. Unique Morse Code Words
题目分析
这个题目要求算出把给定数组中的字符串转换成摩尔斯码后,有多少个不同的摩尔斯码。
思路
第一步需要把字符串转换成摩尔斯码。
$morse = [
“.-“,”-…”,”-.-.”,”-..”,”.”,”..-.”,”–.”,”….”,”..”,”.—“,”-.-“,”.-..”,”–“,
“-.”,”—“,”.–.”,”–.-“,”.-.”,”…”,”-“,”..-“,”…-“,”.–“,”-..-“,”-.–“,”–..”
];
$replaced = [];
foreach($words as $word){
$chars = str_split($word);
$string = ”;
foreach($chars as $char){
$string .= $morse[ord($char)-ord(‘a’)];
}
}
转换完成后存进数组内,再用 array_unique 函数排除。再 count 排除结果即可。
最终代码
<?php
class Solution {
function uniqueMorseRepresentations($words) {
$morse = [“.-“,”-…”,”-.-.”,”-..”,”.”,”..-.”,”–.”,”….”,”..”,”.—“,”-.-“,”.-..”,”–“,”-.”,”—“,”.–.”,”–.-“,”.-.”,”…”,”-“,”..-“,”…-“,”.–“,”-..-“,”-.–“,”–..”];
$replaced = [];
foreach($words as $word){
$chars = str_split($word);
$string = ”;
foreach($chars as $char){
$string .= $morse[ord($char)-ord(‘a’)];
}
$replaced[] = $string;
}
return count(array_unique($replaced));
}
}
若觉得本文章对你有用,欢迎用爱发电资助。
优化方案
直接存为数组的键则可以省去用 array_unique 去重的步骤。