Leetcode PHP题解--D5 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去重的步骤。
2 Comments
新增了「算法系列」类目,以后可以直接发到这个类目下
写得很丑,不敢发算法系列栏目。 因为感觉只是记录了自己做题的过程,并没讲解算法本身。