[LeetCode] 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 wi

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的字符映射表,因为最大的字母为122,因此映射表的大小为123。映射表键值为s中的字符,value为t中对应位置的字符。
②isUsed表代表t中的该字符是否已经被作为s中某字符的value值。

实现代码

#include <iostream>
using namespace std;

//Runtime:12ms
class Solution {
public:
    bool isIsomorphic(string s, string t) {
        int len = s.size();
        unsigned char map[123] = {0};
        bool isUsed[123] = {0};
        for (int i = 0; i < s.size(); i++)
        {
            if (map[s[i]] == 0)
            {
                if (!isUsed[t[i]])
                {
                    map[s[i]] = t[i];
                    isUsed[t[i]] = true;
                }
                else
                {
                    return false;
                }
            }
            else if (map[s[i]] != t[i])
            {
                return false;
            }
        }

        return true;
    }
};

int main()
{
    Solution s;
    cout<<s.isIsomorphic("aba", "baa")<<endl;
    cout<<s.isIsomorphic("egg", "add")<<endl;
    cout<<s.isIsomorphic("foo", "bar")<<endl;
    cout<<s.isIsomorphic("paper", "title")<<endl;
}
目录
相关文章
LeetCode 415. Add Strings
给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。
97 0
LeetCode 415. Add Strings
LeetCode 205. Isomorphic Strings
给定两个字符串 s 和 t,判断它们是否是同构的。 如果 s 中的字符可以被替换得到 t ,那么这两个字符串是同构的。 所有出现的字符都必须用另一个字符替换,同时保留字符的顺序。两个字符不能映射到同一个字符上,但字符可以映射自己本身。
80 0
LeetCode 205. Isomorphic Strings
LeetCode 43. Multiply Strings
给定两个表示为字符串形式的非负整数num1和num2,返回num1和num2的乘积,也表示为字符串形式。
77 0
LeetCode 43. Multiply Strings
|
人工智能 算法
LeetCode 1347. 制造字母异位词的最小步骤数 Minimum Number of Steps to Make Two Strings Anagram
LeetCode 1347. 制造字母异位词的最小步骤数 Minimum Number of Steps to Make Two Strings Anagram
|
Java 索引 Python
LeetCode 205:同构字符串 Isomorphic Strings
题目: 给定两个字符串 s 和 *t*,判断它们是否是同构的。 如果 s 中的字符可以被替换得到 *t* ,那么这两个字符串是同构的。 所有出现的字符都必须用另一个字符替换,同时保留字符的顺序。两个字符不能映射到同一个字符上,但字符可以映射自己本身。
893 0
leetcode 205. Isomorphic Strings
题目 Given two strings s and t, determine if they are isomorphic.
698 0
LeetCode - 43. Multiply Strings
43. Multiply Strings  Problem's Link  ---------------------------------------------------------------------------- Mean:  给定两个字符串,计算这两个字符串相乘的结果.
928 0
|
索引 Java
LeetCode 205 Isomorphic Strings(同构的字符串)(string、vector、map)(*)
版权声明:转载请联系本人,感谢配合!本站地址:http://blog.csdn.net/nomasp https://blog.csdn.net/NoMasp/article/details/50611168 翻译 给定两个字符串s和t,决定它们是否是同构的。
850 0