新知识-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.其实我没太弄懂,表述不好,评论区希望大佬补述一下详细,谢谢大佬!!