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
- leetcode [Isomorphic Strings]//待整理多种解法
- leetcode[Add Strings]//待整理多种解法
- leetcode [Path Sum]//待整理多种解法
- leetcode [Majority Element]//待整理多种解法
- leetcode [Rotate Array]//待整理多种解法
- leetcode [Reverse Bits]//待整理多种解法
- leetcode [Happy Number]//待整理多种解法
- leetcode [Contains Duplicate]//待整理多种解法
- leetcode[Add Digits]//待整理多种解法
- leetcode[Ugly Number]//待整理多种解法
- leetcode[Missing Number]//待整理多种解法
- leetcode[Word Pattern]//待整理多种解法
- leetcode[Ransom Note]//待整理多种解法
- leetcode[Longest Palindrome]//待整理多种解法
- leetcode[Fizz Buzz]//待整理多种解法
- leetcode[Hamming Distance]//待整理多种解法
- leetcode[Island Perimeter]//待整理多种解法
- leetcode[Number Complement]//待整理多种解法
- mosquitto 集群配置
- 应用机器学习(一):聚类分析
- 1
- 面试小结(MT)
- 2
- leetcode [Isomorphic Strings]//待整理多种解法
- data:image/jpeg;base64 数据流处理,保存至oss
- C++实验4-输出星号图
- Python爬虫之Scrapy框架入门1
- 安卓6.0权限申请另一种实现
- JSP 基本语法
- SCU 4438
- V4L2驱动程序架构一
- Find a way