leetcode242 有效的字母異位詞
阿新 • • 發佈:2021-01-14
技術標籤:javaleetcodejava排序演算法leetcode
解題思路
一道簡單題, 首先想到的是用map去做記錄所有出現字母的個數和種類
兩個陣列的map做比對就為正確答案, 確實可行但是超越率只有可憐的5%。
class Solution {
public boolean isAnagram(String s, String t) {
if(s.length()!=t.length()) {
System.out.println("false");
return false;
}
//1、存入兩個map
Map< Character,Integer> maps = new HashMap<>();
Map<Character,Integer> mapt = new HashMap<>();
for (int i = 0; i < s.length(); i++) {
char tmps = s.charAt(i);
char tmpt = t.charAt(i);
maps.put(tmps, maps.getOrDefault(tmps,0)+1);
mapt.put(tmpt, mapt.getOrDefault(tmpt, 0)+1);
}
//2、對比兩個map的值
for(Map.Entry<Character,Integer> entry:maps.entrySet()) {
int ns = entry.getValue();
int nt = mapt.getOrDefault(entry.getKey(),0);
if(ns!=nt) {
//System.out.println("false");
return false;
}
}
return true;
}
}
遺忘了一點無論是大寫字元還是小寫字元都像數字一樣是可以排序的。
程式碼
class Solution {
public boolean isAnagram(String s, String t) {
if(s.length()!=t.length())
return false;
char[] ss = s.toCharArray();
char[] tt = t.toCharArray();
Arrays.sort(ss);
Arrays.sort(tt);
return Arrays.equals(ss,tt);
}
}