- /**
- * 方法一
- * 将s he t 这两个字符串,重新排序
- * 先转换成数组,再使用Arrays方法,然后new 新的字符串对象
- * 最后使用equals方法比较
- * @param s
- * @param t
- * @return
- */
- public static boolean isAnagram(String s, String t) {
- char [] s1 = s.toCharArray();
- Arrays.sort(s1);
- String sortS = new String(s1);
-
- char[] t1 = t.toCharArray();
- Arrays.sort(t1);
- String sortT = new String(t1);
-
- if (sortT.equals(sortS)){
- return true;
- }else {
- return false;
- }
- }
-
- /**
- * 方法二
- * https://programmercarl.com/0242.%E6%9C%89%E6%95%88%E7%9A%84%E5%AD%97%E6%AF%8D%E5%BC%82%E4%BD%8D%E8%AF%8D.html#%E7%AE%97%E6%B3%95%E5%85%AC%E5%BC%80%E8%AF%BE
- * 创建一个长度为26的数组record来装这些元素,[0,0,0,0,0,0……]
- * 然后遍历字符串s,对每一个char 减去 ‘a’,就能得到一个数字,也就是其在数组中的位置,然后将这个位置元素 + 1
- * 例子:
- * String s = "acdh"; String t = "cdha"
- * 我们遍历这个字符串s:
- * a - a = 0;
- * c - a = 2;
- * d - a = 3;
- * h - a = 7;
- * 因此record 就是 [1,0,1,1,0,0,0,7,……]
- *
- * 我们再遍历这个字符串t:
- * c - a = 2;
- * d - a = 3;
- * h - a = 7;
- * a - a = 0;
- * 因此我们对这些位置的数字-1
- *
- * 因此record就是 [0,0,0,0,0,……]
- * 最后我们判断record是否全部为0,是,则说明,s和t字母出现的次数一样,否则就不一样
- * @param s
- * @param t
- * @return
- */
- public static boolean isAnagram1(String s, String t) {
- int [] record = new int[26];
-
- for (int i = 0; i < s.length(); i++) {
- record[s.charAt(i) - 'a'] ++;
- }
-
- for (int i = 0; i < t.length(); i++) {
- record[t.charAt(i) - 'a'] -- ;
- }
-
- for (int item : record){
- if (item != 0){
- return false;
- }
- }
- return true;
- }