新知識-Java Map.put(Leetcode 205)
阿新 • • 發佈:2021-08-10
力扣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.其實我沒太弄懂,表述不好,評論區希望大佬補述一下詳細,謝謝大佬!!