LeetCode Isomorphic Strings
2015-07-23 04:41
351 查看
原题链接在此:https://leetcode.com/problems/isomorphic-strings/
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.
For example,
Given
return true.
Given
return false.
Given
return true.
Note:
You may assume both s and t have the same length.
Hide Tags
Hash Table
这道题可以用HashMap来做,但要注意的是当扫一个string遇到hm1中已有值时,要双向检测两个HashMap里的对应值,否则就会出现下列错误:
Input:"ab",
"aa"
Output:true
Expected:false
因为没有检查hm2,即使“aa”的第二个值 与 hm2中已有的a相同,也不会返回false。
AC Java:
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.
For 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.
Hide Tags
Hash Table
这道题可以用HashMap来做,但要注意的是当扫一个string遇到hm1中已有值时,要双向检测两个HashMap里的对应值,否则就会出现下列错误:
Input:"ab",
"aa"
Output:true
Expected:false
因为没有检查hm2,即使“aa”的第二个值 与 hm2中已有的a相同,也不会返回false。
AC Java:
public class Solution { public boolean isIsomorphic(String s, String t) { if(s.length() !=t.length()) return false; if(s == null && t == null) return true; HashMap<Character,Character> hm1 = new HashMap<>(); HashMap<Character,Character> hm2 = new HashMap<>(); for(int i = 0;i< s.length();i++){ if(hm1.containsKey(s.charAt(i))){ if(hm1.get(s.charAt(i)) != t.charAt(i)) return false; } if(hm2.containsKey(t.charAt(i))){ if(hm2.get(t.charAt(i))!=s.charAt(i)) return false; } hm1.put(s.charAt(i),t.charAt(i)); hm2.put(t.charAt(i),s.charAt(i)); } return true; } }
相关文章推荐
- LeetCode Isomorphic Strings
- IO流(File类,IO流的分类,字节流和字符流,转换流,缓冲流,对象序列化)
- Win 10人工智能战略转型必胜!
- 构建Spark的IDE开发环境
- linux 出行日记(2)
- C++面向对象编程(二)之 深拷贝和浅拷贝
- 全栈软件工程师和系统架构师的异同
- 定义 新类 继承CCSprite ,记得重写工厂方式。
- 开发知识MISC
- 查看文件尾部最新信息和进程数查看命令
- 诺贝尔获奖者中村修二:东亚教育问题的根源在哪?
- opencv实现canopy算法
- 6.6目录操作
- 设置文件属性,修改文件存取时间
- cocos2d-x 入门之Director,SceneLayer,Sprite
- Codeforces Round #313 (Div. 2)B.B. Gerald is into Art
- 023.Key 路径
- 022.KVC 如何处理不合理的nil值
- 021.forUndefinedKey 处理不存在的key
- 020.KVC 底层执行机制