c++练习四:有效的字母异位词
今天的题目是:
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。
实现
刚开始我想利用异或法来解这道题,但是提交的时候发现测试用例有s = aa; t = bb;这种例子,所以异或法并不能解答这道题,后来决定使用排序法来解答题目 ,先对 s 和 t 进行排序然后 用 c++20的新特性 “太空飞船操作符”(正式点的名字是三路比较运算符 “<=>”)来比较这两个字符串 。
实现代码
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
class Solution {
public:
bool isAnagram(string s, string t) {
sort(s.begin(),s.end());
sort(t.begin(),t.end());
auto res {s<=>t};
if(is_eq(res)) return true;
else return false;
}
};
int main()
{
Solution solve;
string s = "aa";
string t = "bb";
bool res = solve.isAnagram(s, t);
cout<<res<<endl;
return 0;
}