2020年4月17日 星期五

[LeetCode] 242. Valid Anagram 解題思路* (Easy)



這題要比出兩個陣列是否相等,即使陣列裡面的字元排序不一樣也算相等



LeetCode 題目連結

 

https://leetcode.com/problems/valid-anagram/

 

題目


Given two strings s and , write a function to determine if t is an anagram of s.
Example 1:
Input: s = "anagram", t = "nagaram"
Output: true
Example 2:
Input: s = "rat", t = "car"
Output: false

Accept 作法

我用了一個不是很簡短的方法,後來想想這樣對我最直覺。


Runtime: 21 ms
Memory: 40.7 MB

Java 程式碼

class Solution {
    public boolean isAnagram(String s, String t) {

        if(s.length() != t.length()){
            return false;
        }

        if(s.length() == 0 &&  t.length() == 0){
            return true;
        }

        HashMap setS = getStringMap(s);
        HashMap setT = getStringMap(t);

        boolean isAnagram = false;
        for(String keyS : setS.keySet()) {


            if(setT.containsKey(keyS)){
                Integer valueT = setT.get(keyS);
                if(((int)valueT) == ((int)setS.get(keyS))){
                    isAnagram = true;
                }else{
                    isAnagram = false;
                    break;
                }
            }else{
                isAnagram = false;
                break;
            }

        }


        return isAnagram;
    }

    public HashMap getStringMap(String s){
       HashMap set = new HashMap();
        for(int i = 0;i < s.length();i++){
            if(!set.containsKey(String.valueOf(s.charAt(i)))){
               set.put(String.valueOf(s.charAt(i)),1);  
            }else{
                int count = (int)set.get(String.valueOf(s.charAt(i)));
                count+=1;
                set.put(String.valueOf(s.charAt(i)),count);  
            }

        }
        return set;
    }
}



 

更多 LeetCode 相關資源

 

複習程式面試書籍


除了 LeetCode 練習外,我也入手了這本,題庫來自真正的面試,並非摘自教科書。它們反映出頂尖公司真正會出的題目,你可以藉此做好充分準備
需要的話可以看看,寫得很仔細。





書名:提升程式設計師的面試力:189道面試題目與解答




相關 LeetCode文章一律會放在 程式解題 標籤分類,歡迎持續追蹤。


沒有留言:

張貼留言