242. Valid Anagram
2016-05-30 14:30
190 查看
题目:
Given 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.
Note:
You may assume the string contains only lowercase alphabets.
Follow up:
What if the inputs contain unicode characters? How would you adapt your solution to such case?
题意:
给定两个字符串s和t,写一个功能完成检测字符串t是否是字符串s的变位词。
如果字符串s与t包含相同的字符,但排列顺序不同,则称字符串t是s的变位词。
思路一:
将两个字符串排序,然后直接对比。
代码:80ms
class Solution {
public:
bool isAnagram(string s, string t) {
sort(s.begin(), s.end());
sort(t.begin(), t.end());
return s==t;
}
};
思路二:
建立一个数组,用来记录每个字符串中每个字母出现的次数。
代码:12ms
class Solution {
public:
bool isAnagram(string s, string t) {
vector<int> result(26, 0);
for(int i=0; i<s.size(); i++){ //将每个字符对应到数组里
result[s[i]-'a']++;
}
for(int i=0; i<t.size(); i++){ //将数组中的元素相对应,出现一次减去一次
result[t[i]-'a']--;
}
for(int i=0; i<result.size(); i++){ //判断结果集中是否为零
if(result[i] != 0){
return false;
}
}
return true;
}
};
Given 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.
Note:
You may assume the string contains only lowercase alphabets.
Follow up:
What if the inputs contain unicode characters? How would you adapt your solution to such case?
题意:
给定两个字符串s和t,写一个功能完成检测字符串t是否是字符串s的变位词。
如果字符串s与t包含相同的字符,但排列顺序不同,则称字符串t是s的变位词。
思路一:
将两个字符串排序,然后直接对比。
代码:80ms
class Solution {
public:
bool isAnagram(string s, string t) {
sort(s.begin(), s.end());
sort(t.begin(), t.end());
return s==t;
}
};
思路二:
建立一个数组,用来记录每个字符串中每个字母出现的次数。
代码:12ms
class Solution {
public:
bool isAnagram(string s, string t) {
vector<int> result(26, 0);
for(int i=0; i<s.size(); i++){ //将每个字符对应到数组里
result[s[i]-'a']++;
}
for(int i=0; i<t.size(); i++){ //将数组中的元素相对应,出现一次减去一次
result[t[i]-'a']--;
}
for(int i=0; i<result.size(); i++){ //判断结果集中是否为零
if(result[i] != 0){
return false;
}
}
return true;
}
};
相关文章推荐
- [C/C++11]_[初级]_[实用时间库chrono]
- 基于webpack使用ES6新特性(转载)
- js取整、取余等常用方法
- WebView内存泄漏记录
- 栈、队列和链表
- Android常用控件之ListView(二)
- 用setAnimationStyle来设置popwindow显示消失的动画效果
- Bootstrap+jfinal退出系统弹出确认框的实现方法
- return和finally的执行和联系
- iOS CGColorGetComponents
- nginx 平滑重启
- 在SublimeText上搭建ReactJS开发环境(转载)
- Qt浅谈之十三:抓图截屏
- 2016春季练习——DP水题
- RadioButton去掉默认样式小圆点
- iOS中日期和字符串的相互转化(时间戳)
- 90---Hibernate使用方法-----------使用注解完成Hibernate映射
- DrawerLayout+NavigationView打造Google原生Material Design风格侧滑菜单
- 第三章:多态
- lua脚本中字符串分割split