Leetcode - Isomorphic Strings
来源:互联网 发布:java 乘法溢出 编辑:程序博客网 时间:2024/05/29 16:25
Question
Given two strings s and t, determine if they are isomorphic.
Two strings are isomorphic if the characters in s can be replaced to get t.
All occurrences of a character must be replaced with another character while preserving the order of characters. No two characters may map to the same character but a character may map to itself.
Example
Given “egg”, “add”, return true.
Given “foo”, “bar”, return false.
Given “paper”, “title”, return true.
Note
You may assume both s and t have the same length.
Java Code
//版本一:使用HashMap存储字符之间的映射关系public boolean isIsomorphic(String s, String t) { int len = s.length(); if(len < 2) return true; //把<s, t>作为键值对存入HashMap中 HashMap<Character, Character> map = new HashMap<>(2*len); //字符串转字符数组 char[] sKey = s.toCharArray(); char[] tValue = t.toCharArray(); for (int i = 0; i < len; i++) { if(map.containsKey(sKey[i])) { //如果map中已经存在当前字符sKey[i]且其映射的字符与当前tValue[i]不同,返回假 if(tValue[i] != map.get(sKey[i])) return false; }else { //如果map中不存在当前字符sKey[i]但已经有其他的键映射到当前的值tValue[i],返回假 if(map.containsValue(tValue[i])) return false; //如果map中不存在当前的键值对<sKey[i], tValue[i]>,则存入 map.put(sKey[i], tValue[i]); } } return true;}//版本二:使用数组记录原字符和映射字符的状态并存储字符之间的映射关系public boolean isIsomorphic(String s, String t) { boolean [] key = new boolean[128];//默认初始化为false,用于标记各个key是否存在 boolean[] value = new boolean[128];//默认初始化为false,用于标记各个value是否存在 int[] map = new int[128];//默认初始化为0 char[] sKey = s.toCharArray(); char[] tValue = t.toCharArray(); char ss, tt; for(int i = s.length() - 1; i >= 0; --i) { ss = sKey[i]; tt = tValue[i]; if(key[ss]) { //如果ss在s中已经出现过且之前映射的字符与当前映射的字符tt不同,返回假 if(map[ss] != tt) return false; }else { //如果ss在s中未出现过但已有其他key映射到了tt,返回假 if(value[tt]) return false; //否则标记key和value,并存储它们之间的映射关系 key[ss] = true; value[tt] = true; map[ss] = tt; } } return true; }
0 0
- LeetCode 205 - Isomorphic Strings
- [LeetCode] Isomorphic Strings
- Isomorphic Strings Leetcode JAVA
- [LeetCode] Isomorphic Strings
- [LeetCode 205]Isomorphic Strings
- LeetCode 205-Isomorphic Strings
- leetcode Isomorphic Strings
- leetcode(c++) Isomorphic Strings
- leetcode--Isomorphic Strings
- [LeetCode]Isomorphic Strings
- LeetCode OJ Isomorphic Strings
- leetcode 205: Isomorphic Strings
- leetcode 205 Isomorphic Strings
- [leetcode] Isomorphic Strings
- 【leetcode】Isomorphic Strings
- [leetcode]Isomorphic Strings
- [LeetCode]Isomorphic Strings
- leetcode--Isomorphic Strings
- 对MobSF的源码进行分析
- 模拟BootStrap的弹框功能
- C#连接数据库的方法
- 利用curand的host API生成均匀分布的随机数
- 【arduino】通过Esp8266-01模块实现的WiFi通信(3)使用TCP协议进行局域网通信(client篇)
- Leetcode - Isomorphic Strings
- Spring Mvc那点事---(1)开发环境搭建
- 19.Remove Nth Node From End of List(7.54%)
- Android-SQLiteDatabase数据存储
- Cortex-M3 内部寄存器
- java源码分析--Enumeration接口和Iterator接口
- 自动释放池简单原理
- CWHArray模版类
- img标签详解