新知识-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打卡

原文地址:https://www.cnblogs.com/husiyu/p/15125211.html