LeetCode(205)Isomorphic Strings

原创 2015年11月21日 15:44: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.

分析

判断给定的两个字符串是否同构,字符串字面上很容易就能看得出来;

但是怎么用算法来判断呢?

仔细分析:
e <——> a
g <——> d
g <——> d
感觉像离散数学中的双向映射。

在数据结构中可以选择map,选择unordered_map来存储字母映射关系,它的搜索性能为常量。

AC代码

class Solution {
public:
    bool isIsomorphic(string s, string t) {
        if (s.size() != t.size())
            return false;
        //求两个字符串的长度
        int len = s.size();

        //首先验证字符串s—>t的映射
        unordered_map<char, char> um;
        for (int i = 0; i < len; ++i)
        {
            auto pos = um.find(s[i]);
            if (pos == um.end())
                um.insert({ s[i], t[i] });
            else{
                if ((*pos).second != t[i])
                    return false;
            }//else
        }//for

        //再验证字符串t—>s的映射
        um.clear();
        for (int i = 0; i < len; ++i)
        {
            auto pos = um.find(t[i]);
            if (pos == um.end())
                um.insert({ t[i], s[i] });
            else{
                if ((*pos).second != s[i])
                    return false;
            }//else
        }//for
        return true;
    }
};

GitHub测试程序源码

版权声明:本文为博主原创文章,未经博主允许不得转载。

【LeetCode-面试算法经典-Java实现】【205-Isomorphic Strings(同构字符串)】

【205-Isomorphic Strings(同构字符串)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】代码下载【https://github.com/Wang-Jun-Ch...
  • DERRANTCM
  • DERRANTCM
  • 2015年08月27日 06:33
  • 3587

leetcode 205: Isomorphic Strings

Given two strings s and t, determine if they are isomorphic. Two strings are isomorphic if the ch...
  • xudli
  • xudli
  • 2015年04月30日 04:54
  • 6988

LeetCode 205:Isomorphic Strings

Given two strings s and t, determine if they are isomorphic. Two strings are isomorphic if the char...
  • sunao2002002
  • sunao2002002
  • 2015年05月08日 23:06
  • 3156

Leetcode_205_Isomorphic Strings

本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/46530865 Given two strings...
  • pistolove
  • pistolove
  • 2015年06月17日 10:27
  • 1502

【LeetCode-205】Isomorphic Strings(C++)

题目要求:判断两个字符串的模式相同,及用一个字符串中的字符替换相同位置的第二个字符串中的字符,得到的字符串与第一个字符串相同。 解题方法:这道题要求映射唯一,及对于字符串s中的字符,在t中仅有一个相...
  • liujiayu1015
  • liujiayu1015
  • 2016年09月09日 22:40
  • 204

LeetCode 205. Isomorphic Strings(C++版)

Given two strings s and t, determine if they are isomorphic. Two strings are isomorphic if the char...
  • Mary19920410
  • Mary19920410
  • 2017年03月31日 10:54
  • 235

205. Isomorphic Strings [easy] (Python)

题目链接https://leetcode.com/problems/isomorphic-strings/题目原文 Given two strings s and t, determine if ...
  • coder_orz
  • coder_orz
  • 2016年06月15日 14:02
  • 2061

【LeetCode】205 Isomorphic Strings (c++实现)

Given two strings s and t, determine if they are isomorphic. Two strings are isomorphic if the chara...
  • styshoo
  • styshoo
  • 2015年07月22日 10:29
  • 538

关于LeetCode中Isomorphic Strings一题的理解

题目如下: Given two strings s and t, determine if they are isomorphic. Two strings are isomorphic if th...
  • zsy112371
  • zsy112371
  • 2016年09月07日 18:31
  • 351

leetcode[205]:Isomorphic Strings

Isomorphic StringsGiven two strings s and t, determine if they are isomorphic.Two strings are isomor...
  • hahubaba
  • hahubaba
  • 2015年07月25日 15:36
  • 146
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:LeetCode(205)Isomorphic Strings
举报原因:
原因补充:

(最多只允许输入30个字)