给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
示例 1: 输入: s = "anagram", t = "nagaram" 输出: true
示例 2: 输入: s = "rat", t = "car" 输出: false
说明: 你可以假设字符串只包含小写字母。
#思路:
数组也是一个哈希表,而且这道题目中字符串只有小写字符,所以可以定义一个数组,来记录字符串s里字符出现的次数。
#include<iostream>
#include<vector>
#include<string.h>
using namespace std;
int main()
{
string s;
cin>>s;
string t;
cin>>t;
int res[26]={0};//记录字符出现的次数
for (int i=0;i<s.size();i++)
{
res[s[i]-'a']++;//每个字符出现一次,次数加1
}
for (int j=0;j<t.size();j++)
{
res[t[j]-'a']--;//每个字符出现一次与s相同的,值减1
}
for(int k=0;k<26;k++)//如果属于字母异位,则值为0,如果有不为零的,则不属于字母异位
{
if(res[k]!=0)
{
cout<<"否"<<endl;
return 0;
}
}
cout<<"是"<<endl;
return 0;
}
结果:
kobe
eokb
是
ingram
inghra
否