leetcode:Isomorphic Strings

来源:互联网 发布:3ds怎么网络联机 编辑:程序博客网 时间:2024/06/13 18:07

原题:
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的长度相等

Python实现:

class Solution(object):    def isIsomorphic(self, s, t):        if len(s)!=len(t):            return False        patDict,strDict={},{}        for x,y in zip(s,t):            if x not in patDict:                patDict[x]=y            if y not in strDict:                 strDict[y]=x            if patDict[x]!=y or strDict[y]!=x:                return False        return True

Java 实现:

public class Solution {    public boolean isIsomorphic(String s, String t) {        if(s.length()!=t.length()) return false;        Map<Character,Character> mp = new HashMap<Character,Character>();        char[] t_arr = t.toCharArray();        if(s.length()!=t_arr.length)return false;        for (int i = 0; i < s.length(); i++) {            if(!mp.containsKey(s.charAt(i))){                if(mp.containsValue(t_arr[i])) return false;                mp.put(s.charAt(i),t_arr[i]);            }            else if(!mp.get(s.charAt(i)).equals(t_arr[i])){                return false;            }        }        return true;    }}
0 0
原创粉丝点击