【LeetCode】(242)Valid Anagram(Easy)
来源:互联网 发布:网络推广的岗位职责 编辑:程序博客网 时间:2024/05/21 10:03
题目
Valid Anagram
Total Accepted: 15164 Total Submissions: 44518My SubmissionsGiven two strings s and t, write a function to determine if t is an anagram of s.
For example,
s = "anagram", t = "nagaram", return true.
s = "rat", t = "car", return false.
解析
我的思路是先判断长度是否一样,如果一样之后对两个string进行排序,排序后比较即可。
class Solution {public: bool isAnagram(string s, string t) { if (s.length() != t.length()) { return false; } sort(s.begin(),s.end()); sort(t.begin(),t.end()); if (s==t) { return true; } else { return false; } }};
当然,我修改后更简洁的如下
class Solution {public: bool isAnagram(string s, string t) { if (s.length() != t.length())return false;sort(s.begin(),s.end());sort(t.begin(),t.end());return s==t }};
参考了一下别人的思路,其实还可以这样:题目相当于只关心每个字母的个数是否一致,我们可以借鉴统计直方图的思路,建立一个a[26]来统计字符串中每个字母的频率,如果两个得到的统计结果一样,则true。
代码如下
class Solution {public: bool isAnagram(string s, string t) { if (s.size() != t.size()) return false; int bit[26] = {0}, len = s.length(); for(int i=0; i<len; i++) bit[s[i]-'a']++; for(int i=0; i<len; i++) if(--bit[t[i]-'a'] < 0) return false; return true; }};
他比较有技巧的一点是,如果全部统计完频率再比较其实还是很耗时的,他用同一个统计表格,统计s时累积起来,统计t的时候则做减法,这样一旦频率表中的某个字母数小于0了,可以提前退出,这样确实省时也节省空间。
0 0
- [Leetcode 242, Easy] Valid Anagram
- 【LeetCode】(242)Valid Anagram(Easy)
- leetcode 242[easy]----Valid Anagram
- <LeetCode><Easy>242Valid Anagram (排序)
- leetcode 242 Valid Anagram(难易度:Easy)
- Easy 242题 Valid Anagram
- Leetcode #242 Valid Anagram
- leetcode-242-Valid Anagram
- leetcode 242: Valid Anagram
- 【LeetCode】242 Valid Anagram
- [leetcode 242]Valid Anagram
- leetCode #242 Valid Anagram
- Leetcode #242 Valid Anagram
- LeetCode 242 Valid Anagram
- [LeetCode 242] Valid Anagram
- LeetCode(242)Valid Anagram
- leetcode[242] Valid Anagram
- leetcode 242 :Valid Anagram
- 软工视频总结Part Two
- POJ-3337 Expression Evaluator-表达式求值
- C单链表的操作
- ScheduleFactory
- oc Block / NSComparisonResult排序 / 字面量
- 【LeetCode】(242)Valid Anagram(Easy)
- 【洛谷】P1089 津津的储蓄计划
- windows编程之进程通信:内存共享
- js 不同页面间传递值并取值
- ios学习之旅---oc面向对象的特点
- cmd下使用命令制作U盘启动盘
- iOS 网络开发NSURLConnection——使用block回调方法发送异步请求
- css实现手风琴图片特效
- 一起talk C栗子吧(第四十回:C语言实例--遍历二叉树)