Valid Anagram
作者:money
标签:leetcode,C++
问题:
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.
问题分析:
给定两个字符串,判断t是否s的字母乱序。该问题通过计算两个单词内组成的字母个数是否相同即可。
我的解题方法是简历两个长26的vector,记录s,t中26个字母分别出现的次数。最后比较两个vector是否相同,即可判断。
由于题目假定字母均为小写。
实现代码:
#include <iostream>
#include <string>
#include <vector>
// submit these code to leetcode
// begin
using namespace std;
class Solution {
public:
bool isAnagram(string s, string t) {
vector<int> a(26,0);
vector<int> b(26,0);
int sch,tch=0;
if(s.size()!=t.size())
return false;
else
{
for(int i=0;i<s.size();i++)
{
sch=s[i]-'a';
tch=t[i]-'a';
a[sch] =a[sch]+1;
b[tch] =b[tch]+1;
}
return a==b;
}
}
};
// end
// submit these code to leetcode
int main(){
Solution s;
//test case
string str1="hello";
string str2="hlloe";
if(s.isAnagram(str1,str2))
std::cout<<"true"<<endl;
else
cout<<"false"<<endl;
return 0;
}