My code:
import java.util.Arrays;
public class Solution {
public boolean isAnagram(String s, String t) {
if (s == null || t == null || s.length() == 0 || t.length() == 0)
return true;
char[] s1 = s.toCharArray();
char[] t1 = t.toCharArray();
Arrays.sort(s1);
Arrays.sort(t1);
if (String.valueOf(s1).equals(String.valueOf(t1)))
return true;
else
return false;
}
public static void main(String[] args) {
Solution test = new Solution();
System.out.println(test.isAnagram("a", "a"));
}
}
這道題目本來沒什么好說的。一開始題意不能理解,anangram,其實(shí)就是看兩個字符串的字符,是否相同,雖然順序不同。
最簡單的方法肯定是哈希表,沒意思。
這道題目讓我想起了以前的一道難題,具體是什么我已經(jīng)忘記了。但是他其中的一小部分就是這個題目的解法。
如果給一個string排序?
先轉(zhuǎn)換成 char[]
然后調(diào)用 Arrays.sort();
然后再用 .toString() 返回去。
很簡單簡潔是不是?
錯的,里面有個bug。
char[] temp = ....
temp.toString();
是把char[] 拼接成一個string返回去嗎?
錯的。
他返回的是,自己這個數(shù)組對象的內(nèi)存地址。
所以使用 .toString() 方法的時候一定要謹(jǐn)慎又謹(jǐn)慎!搞清楚他返回的到底是什么。
這里,推薦使用,
String.valueOf(char[])
就轉(zhuǎn)回去了。
PS:
之前我說的那道難題是這道題,也不是很難。
https://leetcode.com/problems/anagrams/
**
總結(jié):
string sort, char[] temp.toString(); String.valueOf(char[] temp)
早上起來發(fā)現(xiàn)腦子根本轉(zhuǎn)不了。只能做幾個簡單題意思下了。但是發(fā)現(xiàn)簡單題也有挺多注意點(diǎn)啊。
睡眠不夠啊
**
Anyway, Good luck, Richardo!