leetcode——Isomorphic Strings

来源:互联网 发布:java图片上传跨域请求 编辑:程序博客网 时间:2024/06/14 01:02

题目:

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.

方法一:

为两个字符串建立hash表,hash[ch]表示ch上一次出现的位置,比较两个字符串对应的字符上次出现的位置是否一样

class Solution {public:    bool isIsomorphic(string s, string t) {        if (s.length() != t.length())         {            return false;        }        int last_appear_s[256], last_appear_t[256];        memset(last_appear_s, -1, 256 * sizeof(int));        memset(last_appear_t, -1, 256 * sizeof(int));        bool is_ok = true;        int length = s.length();        //每次比较当前字符上次出现的位置        for (int i = 0; i < length; ++i)         {            if (last_appear_s[s[i]] != last_appear_t[t[i]])             {                is_ok = false;                break;            }            last_appear_s[s[i]] = i;            last_appear_t[t[i]] = i;        }                return is_ok;            }};


方法二:

遍历字符串,建立起两个字符串字符的对应关系,这种对应关系可以用整数s[i] * 256 + t[i]唯一表示,后面遍历的时候比较映射值有没有变化即可。

class Solution {public:    bool isIsomorphic(string s, string t) {        if (s.length() != t.length())         {            return false;        }        int diff1[256], diff2[256];        memset(diff1, -1, 256 * sizeof(int));//初始化为相同的值,保证第一次比较的时候相等        memset(diff2, -1, 256 * sizeof(int));        bool is_ok = true;        int length = s.length();        //每次比较当前字符上次出现的位置        for (int i = 0; i < length; ++i)         {            if (diff2[t[i]] != diff1[s[i]])             {                is_ok = false;                break;            }                        diff2[t[i]] = diff1[s[i]] = s[i] << 8 + t[i];        }                return is_ok;            }};



0 0
原创粉丝点击