242. Valid Anagram
Given two strings s and t , write a function to determine if t is an anagram of s.
Example 1:
Input: s = “anagram”, t = “nagaram”
Output: true
Example 2:
Input: s = “rat”, t = “car”
Output: 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?
分析
一开始想到对比元素,但两个都是动态表,意思是比较次数错乱,所以想到整体排序然后对比两个字符串是否相等。
c++中引入algorithm模块,调用sort方法可以将字符串排序
java中用字符串的.toCharArray()方法将字符串转为字符数组,然后用Arrays.sort()方法对字符数组排序,最后判断两个字符数组是否相等。
代码
c++:
#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());
return s == t;
}
};
int main() {
Solution so;
string s = "dadaaweaea";
string t = "aeaaweadad";
so.isAnagram(s, t) ? printf("yes!\n") : printf("no!\n");
return 0;
}
java:
public boolean isAnagram(String s, String t) {
if (s.length() != t.length()) {
return false;
}
char[] str1 = s.toCharArray();
char[] str2 = t.toCharArray();
Arrays.sort(str1);
Arrays.sort(str2);
return Arrays.equals(str1, str2);
}
复杂度分析
时间复杂度 | 空间复杂度 |
---|---|
O(n) | O(1) |