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,其实就是看两个字符串的字符,是否相同,虽然顺序不同。
最简单的方法肯定是哈希表,没意思。
这道题目让我想起了以前的一道难题,具体是什么我已经忘记了。但是他其中的一小部分就是这个题目的解法。
如果给一个string排序?
先转换成 char[]
然后调用 Arrays.sort();
然后再用 .toString() 返回去。
很简单简洁是不是?
错的,里面有个bug。
char[] temp = ....
temp.toString();
是把char[] 拼接成一个string返回去吗?
错的。
他返回的是,自己这个数组对象的内存地址。
所以使用 .toString() 方法的时候一定要谨慎又谨慎!搞清楚他返回的到底是什么。
这里,推荐使用,
String.valueOf(char[])
就转回去了。
PS:
之前我说的那道难题是这道题,也不是很难。
https://leetcode.com/problems/anagrams/
**
总结:
string sort, char[] temp.toString(); String.valueOf(char[] temp)
早上起来发现脑子根本转不了。只能做几个简单题意思下了。但是发现简单题也有挺多注意点啊。
睡眠不够啊
**
Anyway, Good luck, Richardo!