同构string

leetcode新题,另外似乎是L家面经题

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中两个char map到t中相同char,所以同时还需要check当前t[i]是否已经对应其他char了,这样就需要两个map来保存map pair的关系

例如 ab, aa return false

 1  //use hashmap to record map of (s, t)
 2     public static boolean isIsomorphic(String s, String t) {
 3         if(s == null && t == null) {
 4             return true;
 5         }
 6         if(s.length() != t.length()) {
 7             return false;
 8         }
 9
10         HashMap<Character, Character> map1 = new HashMap<Character, Character>();//s[i], t[i]
11         HashMap<Character, Character> map2 = new HashMap<Character, Character>();//t[i], s[i]
12
13
14         for(int i = 0; i < s.length(); i++){
15             char schar = s.charAt(i);
16             char tchar = t.charAt(i);
17
18             if(!map1.containsKey(schar)){
19                 map1.put(schar, tchar);
20             }else if(map1.get(schar) != tchar) return false; // map to wrong char
21
22             //check no two map to same char in t
23             if(!map2.containsKey(tchar)){
24                 map2.put(tchar, schar);
25             }else if(map2.get(tchar) != schar) return false;
26         }
27
28         return true;
29     }

时间: 2024-10-11 00:50:05

同构string的相关文章

LeetCode 205 Isomorphic Strings(同构的字符串)(string、vector、map)(*)

翻译 给定两个字符串s和t,决定它们是否是同构的. 如果s中的元素被替换可以得到t,那么称这两个字符串是同构的. 在用一个字符串的元素替换另一个字符串的元素的过程中,所有字符的顺序必须保留. 没有两个字符可以被映射到相同的字符,但字符可以映射到该字符本身. 例如, 给定"egg","add",返回真. 给定"foo","bar",返回假. 给定"paper","title",返回真. 批

LeetCode OJ: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.

HDU 2276 &amp; FZU 1692 (循环同构优化+矩阵快速幂)

HDU 2276 题意: 给定一个01**字符串环**(2<=字符串长度<=100)然后进行m次的变换. 定义变换的规则为:如果当前位置i的左边是1(下标为0的左边是n-1),那么i就要改变状态0->1 , 1->0 比如当前的状态为100101那么一秒过后的状态为010111. 思路: 用公式表示变化状态其实就是: ai=(a(i+n?1)%n+ai)%2 换成位操作就是: ai=a(i+n?1)%n^ ai 于是我们可以建立一个变化矩阵: ??????????1100...00

Jan 10 - Isomorphic Strings; String; Data Type: char; digit and letter

创建两个数组 分别记录两个字符串 各个位置字符出现的上一个位置 通过比较当前字符的上一个位置是否相同 判断是否同构 比较坑爹的是 一开始以为只有字母 所以纠结于怎么找出字母来... 代码如下: public class IsomorphicStrings { public static boolean isIsomorphic(String s, String t) { int[] alpha1 = new int[1000]; int[] alpha2 = new int[1000]; for

uva12489 Combating cancer(树同构)

转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3933 给你两棵无根树,让你判断这两棵树是否同构 不会判断树同构,果断抄了个模板,乱搞给过掉了. 首先由于给的是无根树,而要判断无根树是否同构得以重心为根,然后做一个括号序列

子图同构算法Ullmann实现,并采取了Refinement(java语言)

子图同构算法Ullmann早在1976年就提出来了,大家有兴趣可以自己去搜索下原文看看.这里我就简要的阐述一下. 给定两个图Q 和 G, 它们相应的矩阵分别是和.我们的目标就是找到矩阵 算法步骤: Step1. Setup matrix Mn×m , such that M[i][j]=1, if 1) the i-th vertex in Q hasthe same label as the j-th vertex in G; and 2) the i-th vertex has smalle

字符串同构

***************************************** 题目  判断s和t是不是一种模式,eg add  cpp是同构 ***************************************** 思路:用hash表,将s.t中所有出现过的字符 对应到1-26,比较对应的数字是否相同 class Solution { public: bool isIsomorphic(string s, string t) { if(s.length()!= t.length(

ZOJ--3602--Count the Trees【DFS+Hash】树的同构

链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3602 题意:给出一棵有n个节点的二叉树和一棵有m个节点的二叉树,给出每个节点的左右子树信息,问这两棵树有几个相同的子树. 思路:树的同构,比赛时没想法,赛后看的别人的解题报告.实际上是给每个节点的左右子树一个哈希值,不用像字符串哈希那么麻烦,直接给每个子树一个数字标记就行了,用map映射每个节点的左子树和右子树信息对应一个标记值,用DFS给两棵树的每个节点都赋一个哈

poj-1635 Subway tree systems(推断两个有根树是否同构)-哈希法

Description Some major cities have subway systems in the form of a tree, i.e. between any pair of stations, there is one and only one way of going by subway. Moreover, most of these cities have a unique central station. Imagine you are a tourist in o