1. 程式人生 > 其它 >leetcode242 有效的字母異位詞

leetcode242 有效的字母異位詞

技術標籤: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; } }

遺忘了一點無論是大寫字元還是小寫字元都像數字一樣是可以排序的。

而java中Arrays又恰恰提供了sort()和equals()兩個函式直接簡化了大量的程式碼,避免重複造輪子和出錯。這裡還要感謝leetcode官方題解幫助我運用java的各種函式。

程式碼

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);
    }
}