LeetCode 242. 有效的字母异位词

与世无争的帅哥 提交于 2020-01-27 16:10:09

题意: 字母异位词,即不在意字符的顺序,只要字符种类和各种字符个数一样就符合字母异位词。


解题思路一:因为题目告诉你,只使用小写字母。  因此只需要使用计数排序,记录元素的数目就行。(也可以理解为hash)

 

 1 bool isAnagram(string s, string t) {
 2         if(s.size()!=t.size()){
 3             return false;
 4         }
 5         array<int,26> a1{0},a2{0};  // 初始化不为0;
 6         // ostream_iterator<int> os{cout," "};  // 采用迭代器进行输出:ostream_iteraotr
 7         // copy(begin(a1),end(a1),os);  // copy
 8         for(auto& p:s){   //auto& p:string ; char
 9             a1[p-'a']++;
10         }
11         for(auto& p:t){
12             a2[p-'a']++;
13         }
14         for(int i=0;i<26;i++){
15             if(a1[i]!=a2[i]){
16                 return false;
17             }
18         }
19         return true;
20     }
  • 使用array需要进行初始化,采用列表初始化:{} ,只要将第一个初始为0,那么接下来的元素都会进行初始化0。

 

拓展思考:如果是Unicode码,那么必须用map(有序的),算法大致思路不变。

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!