您的位置:首页 > 编程语言 > C语言/C++

242. Valid Anagram (sort) c++

2018-03-11 14:58 204 查看
Decsription:
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的变体。

注:
可以假定字符串只包含小写字母。

(后续:

如果输入包含Unicode字符怎么办?你将如何使你的解决方案适应这种情况?)

算法思路:
题目的意思是,s 和 t两个字符串所包含的单词数量和每种单词的个数应该是相同的,只不过是位置有所不同。
我们采取的办法是用一个数组记录下 s中的每个字母出现的次数,然后循环 t 字符串 ,出现了哪个字母就把数组中该位置的数组元素的值减一,最后结束两个循环时,若数组所有的元素值都是0的话,则说明满足条件,返回true

class Solution {
public:
bool isAnagram(string s, string t) {

int a[26]={0};
int i;
for(i=0;i<s.length();i++)
a[s[i]-'a']++;

for(i=0;i<t.length();i++)
a[t[i]-'a']--;

for(i=0;i<26;i++)
{
if(a[i]!=0)
return false;
}
return true;

}
};注意:
虽然s 和 t的长度是相等的,但若是把 a[s[i]-'a']++; a[t[i]-'a']--;放在一个循环中就会出现,
time limit exceeded!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: