Isomorphic Strings
来源:互联网 发布:蜀地割据知乎 编辑:程序博客网 时间:2024/06/05 15:46
题目描述
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.
所有s中的每个字母在对应位置都可以被t中同一个字母替换,paper的p被title的t替换了,那么下一次出现p的地方一定对应t
从1到length遍历,建立一个hash表用于标识出现过的字母,这里需要注意,组成字符串的字符可以是ascii码中的任意,ascii码由0~255,所以建立两个int[256]用来记录 最终目的就是验证这次a对应b下次出现a的时候对应的还得是b
int[] apls = new int[256];int[] aplt = new int[256]; for(int i = 0;i < s.length();i++){ if(apls[s.charAt(i)]!=aplt[t.charAt(i)])return false; apls[s.charAt(i)] = i+1; aplt[t.charAt(i)] = i+1; }return true;也可以将s字符和t的字符建立映射,但是光每对映射相同还不行,t中字符智能对应一种映射,他们是一对一映射
int[] apl = new int[256]; Set<Integer> set = new HashSet(); for(int i = 0;i < s.length();i++){ if(apl[s.charAt(i)] == 0){ if(set.add((int)t.charAt(i))){ apl[s.charAt(i)] = (int)t.charAt(i); }else return false; } else if(apl[s.charAt(i)]!=(int)t.charAt(i))return false; } return true;
阅读全文
0 0
- Isomorphic Strings
- Isomorphic Strings
- Isomorphic Strings
- Isomorphic Strings
- Isomorphic Strings
- Isomorphic Strings
- Isomorphic Strings
- Isomorphic Strings
- Isomorphic Strings
- Isomorphic Strings
- Isomorphic Strings
- Isomorphic Strings
- Isomorphic Strings
- Isomorphic Strings
- Isomorphic Strings
- Isomorphic Strings
- Isomorphic Strings
- Isomorphic Strings
- python 函数
- HTML基础--(四)
- #终端种类及修改终端命令提示符
- 【Mongo】架构从复制集到分片集群
- VLAN/Trunk以及三层交换
- Isomorphic Strings
- MySQL体系结构
- 怎么用MATLAB来读取MIT-BIH的心电数据
- 【BZOJ 3926】【ZJOI 2015】 诸神眷顾的幻想乡
- ThinkPHP 3.2.3 Excel文件内容导入数据库
- JSONP跨域访问浅谈
- ROS系统初探
- 【题解】Bomb
- git 总结+踩坑