给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。
就是判断t和s是否是字母数量相同。字符相同顺序不同,例如ABC,BCA就是异步字母词
private bool 字母移位词2(string s, string t)
{
s = 冒泡排序(s);
t = 冒泡排序(t);
return s == t;
}
第一种解法就是将两个字符串进行排序。
然后判断两个字符串是否相同
private bool 字母移位词(string s, string t)
{
int[] temp = new int[256];
for (int i = 0; i < s.Length; i++)
{
temp[(int)s[i]]++;
}
for (int i = 0; i < t.Length; i++)
{
temp[(int)t[i]]--;
}
for (int i = 0; i < temp.Length; i++)
{
if (temp[i] != 0)
{
return false;
}
}
return true;
}
第二种是根据字符得ASCII码。
字母得ASCII码实在0-256之间。
1.申请一个长度位256得int 数组。默认值都为=0.
2.然后遍历字符串“S”,在字符位得位置+1;
3.然后遍历字符串“T”,在字符位得位置-1;
提示:如果这时temp数组得所有位置得值都为0,说明T就是S得异步字符词。
4.遍历数组temp,数组得所有位置得值都为0。