[lintcode]两个字符串是变位词
2015-11-10 20:49
573 查看
1、问题
链接:http://www.lintcode.com/zh-cn/problem/two-strings-are-anagrams/内容:写出一个函数 anagram(s, t) 去判断两个字符串是否是颠倒字母顺序构成的。
样例:给出 s="abcd",t="dcab",返回 true
2、分析
判断两个字符串是否是颠倒字母顺序构成的,我们只需要判断在字符串s和字符串t中,t中有的字符是否s中也有对应的,同时要注意个数的问题。这里我们用一个数组ch来映射每一个字母。对于s中的每一个字符s[i],将其映射到ch中的ch[s[i]]上,出现一次,次数就增加1;同理,对于字符串t中的每一个字符t[i],将其映射到ch中的ch[t[i]],出现一次,次数就减小一次。最后遍历整个映射的数组,只有当该数组中的每一位都为0,才表示两个字符串中的字母都是对应有的,且个数也是相同的,这样这两个字符串就是变为词了。3、代码
<p>class Solution {</p>public: bool anagram(string s, string t) { if(s.length() != t.length()) { return false; } short ch[260]; memset(ch, 0, sizeof(ch)); for(int i = 0; i < s.length(); i++) { ch[s[i]]++; ch[t[i]]--; } for(int i = 0; i < 260; i++) { if(ch[i] != 0) { return false; } } return true; } };
相关文章推荐
- 一个关于if else容易迷惑的问题
- 一道sql面试题附答案
- C# 超高面试题收集整理
- 人人网javascript面试题 可以提前实现下
- PHP中设置一个严格30分钟过期Session面试题的4种答案
- 据说是雅虎的一份PHP面试题附答案
- php牛逼的面试题分享
- 一套比较完整的javascript面试题(部分答案)
- 小米公司JavaScript面试题
- 超级全面的PHP面试题整理集合第1/2页
- 5个实用的shell脚本面试题和答案
- PHP经典面试题集锦
- 8个PHP数组面试题
- PHP中提问频率最高的11个面试题和答案
- 用PHP解决的一个栈的面试题
- PHP面试题之文件目录操作
- 几道坑人的PHP面试题 试试看看你会不会也中招
- 5个JavaScript经典面试题
- Java高级面试题小结
- Java实现栈和队列面试题