1. 程式人生 > 其它 >新知識-Java Map.put(Leetcode 205)

新知識-Java Map.put(Leetcode 205)

力扣205題——同構字串

程式碼

class Solution {
    public boolean isIsomorphic(String s, String t) {
        HashMap<Object,Integer> map= new HashMap();
        Integer i = 0;
        for (; i < s.length(); i++) {
            if(map.put(s.charAt(i),i) != map.put(t.charAt(i)+"",i)) return false;
        }
        return true;
    }
}

我太菜了

思路

False:
1.我一開始想用getOrdefault存放s和t的字元個數
2.想通過>0的情況下判斷2個String有無不同個數的字元個數
True:
1.完全不需要用map.put(s,map.getOrdefault(s,0)+1)來存放字元個數,直接for i找到下標用charAt(i)遍歷就行了,哦吼吼我真菜!!!!
2.可以直接用map<Character,Character>存放2個String的對映就行,然後用map的k-v解決就行了

這裡貼一個評論區大神的程式碼:

class Solution {
    public boolean isIsomorphic(String s, String t) {
        if(s.length() != t.length()){
            return false;
        }
        
        HashMap<Character, Character> map = new HashMap<>();
        for(int i=0; i<s.length(); i++){
            if(!map.containsKey(s.charAt(i))){
                if(map.containsValue(t.charAt(i))){
                    return false;
                }
                map.put(s.charAt(i), t.charAt(i));
            }else{
                if(map.get(s.charAt(i))!=t.charAt(i)){
                    return false;
                }
            }
        }
        
        return true;
    }
}

今日份收穫:

Map<Object,Integer> map
map.put(s.charAt(i),i)顯示:
1.當map不存在對映時,返回null
2.如果存在Key值,返回上一個Key值
3.其實我沒太弄懂,表述不好,評論區希望大佬補述一下詳細,謝謝大佬!!

Java打卡