网站开发的实训周,库尔勒网站建设哪家好,南昌网站建设公司服务器,产品做网站题目描述
给定两个字符串 s 和 t#xff0c;判断它们是否是同构的。
如果 s 中的字符可以被替换得到 t #xff0c;那么这两个字符串是同构的。
所有出现的字符都必须用另一个字符替换#xff0c;同时保留字符的顺序。两个字符不能映射到同一个字符上#xff0c;但字符可…题目描述
给定两个字符串 s 和 t判断它们是否是同构的。
如果 s 中的字符可以被替换得到 t 那么这两个字符串是同构的。
所有出现的字符都必须用另一个字符替换同时保留字符的顺序。两个字符不能映射到同一个字符上但字符可以映射自己本身。
示例 1:
输入: s egg, t add
输出: true示例 2:
输入: s foo, t bar
输出: false示例 3:
输入: s paper, t title
输出: true说明: 你可以假设 s 和 t 具有相同的长度。
解法
/*** 方法1使用map存映射* param s* param t* return*/public boolean isIsomorphic(String s, String t) {MapString, String map new HashMapString, String();String si null, tinull;for(int i0;is.length();i) {si String.valueOf(s.charAt(i));ti String.valueOf(t.charAt(i));if(map.containsKey(si)) {if(!map.get(si).equals(ti)) return false;}else {if(map.containsValue(ti)) return false;}map.put(si, ti);}return true;}/*** 方法2判断字符串中相同位置的元素首次出现的位置是否相同即可* param s* param t* return*/public boolean isIsomorphic2(String s, String t) {for(int i0;is.length();i) {if(s.indexOf(s.charAt(i)) ! t.indexOf(t.charAt(i))) return false;}return true;}