leetcode [Isomorphic Strings]//待整理多种解法

来源:互联网 发布:mac l4d2 编辑:程序博客网 时间:2024/06/06 05:31
public class Solution {//按题意:字符串s与字符串t在模式上是相同的//所以要先弄清楚字符串s是什么格式,如s="aba",t="baa",那么就不匹配,因为t也应该是"xyx"的格式//所以比较时应该是以字符串s横向判断(格式),结合字符串s与字符串t纵向比较(匹配的a-x,b-y)public boolean isIsomorphic(String s, String t) {        boolean res = true;        //这就是哈希       HashMap<Character, Character> map = new HashMap<>();//用一个map来存储两个字符串中匹配的字符,map只是为了体现aba与xyx中a-x的匹配        Set<Character> setS= new HashSet<>();        Set<Character> setT= new HashSet<>();//这两个set是为了纵向判断字符串s中的格式        //题目中提到两个字符串长度是相同的        for(int i = 0; i < s.length(); i++){        char a = s.charAt(i);        char b = t.charAt(i);        if(map.containsKey(a)){//既然a出现在了map中,那么纵向判断s与t        if(map.get(a) != b){        return false;        }        }        else if(setT.contains(b)){//这时a没有出现在map中,说明a在字符串s中是第一次出现,那么字符b也应该是在字符串t中第一次出现,这才符合字符串s的横向模式        return false;        }        else{        map.put(a, b);        }        //最后才插入Set        setS.add(a);        setT.add(b);        }        return res;    }}

一个关于if-else的知识点:

//在没有加花括号将if else语句分块时,else语句离与它最近的没被else语句匹配的if语句匹配,//但是加了花括号,else语句与分块之前的没被匹配的if匹配


0 0
原创粉丝点击