博文中会简要介绍Leetcode P0242题目分析及解题思路。
“Valid Anagram”是一道很简单的题目,题目要求判断两个单词是否属于异构词。所谓“异构词”,就是组成单词的字母完全一致(包括数量),但是顺序有差别。
这道题基本思路有两种,一种是利用HashTable分别记录两个单词的字母组成,然后比较两个HashTable是否完全一致即可;另一种则是将两个单词中的字母按字母序排序,若排序后的排列一致则这两个单词互为异构词。
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?
以下是Java的题解代码实现。
class Solution {
public boolean isAnagram(String s, String t) {
char[] sChars = s.toCharArray(), tChars = t.toCharArray();
Arrays.sort(sChars);
Arrays.sort(tChars);
return String.valueOf(sChars).equals(String.valueOf(tChars));
}
}
以下是C++的题解代码实现。
class Solution {
public:
bool isAnagram(string s, string t) {
sort(s.begin(), s.end());
sort(t.begin(), t.end());
return s == t;
}
};