唯一摩斯密码词——Leetcode804

    xiaoxiao2025-11-05  18

    Leetcode804——摩斯密码重复单词计数(字符串的比较,数组元素的替换)

    注:耗时明显长于平均水平,之后可以研究一下。

    //创建摩斯密码表,逐个翻译单词,再统计翻译后有多少不同种类字符串 class Solution { public: int uniqueMorseRepresentations(vector<string>& words) { string mos[26]={".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."}; int i,j; string temp,mosword; for(i=0;i<words.size();i++) //将原单词数组words翻译 { temp=words[i]; mosword=""; for(j=0;j<temp.length();j++) { cout<<int(temp[j])<<endl; mosword+=mos[int(temp[j])-97]; //取ASCII码-97,即a对应0 } words[i]=mosword; cout<<words[i]<<endl; } int k=0; //返回值,一类重复的字符串+1 int k1=0; //用于for循环终止条件,每个字符串都+1 for(i=0;i<words.size();i++) { if(words[i]==""){continue;} //遇到空字符串直接跳过 for(j=i+1;j<words.size();j++) { cout<<words[i]<<" "<<words[j]<<endl; if(words[i]==words[j]) {words[j]="";k1++;} //与i相等的j全部置为空字符串,使用k1记录 } words[i]=""; //i遍历结束也置空 k++; k1++; if(k1==words.size()) break; } return k; } };
    最新回复(0)