LeeCode No.205 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 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.

====================================================================================================================================

题目大意是:判断两个字符串之间的生成格式是否一样,其中规则如下:

1、字符之间只能构成一一映射关系,即:同一字符只能映射到一个字符且同一字符只能被一个字符映射

2、字符可以映射到本身

3、保证s和t的长度一致

思路:

1、建立一个map表,表示s中字符映射到t中字符用一个长度为128的数组表示。

2、建立一个记录表,记录t中字符是否已经被构成映射,大小同样为128。

3、根据两个表对t中字符进行遍历:对t中没有映射过的字符新建映射关系并记录,映射过的字符进行判断是否正确映射。

附上代码:

class Solution {
public:
    bool isIsomorphic(string s, string t) {
        int n = s.size();
        if ( n == 0 )
            return true;
        vector <char> chtoch ( 128 , ' ' );
        vector <bool> visit ( 128 , false );
        for ( int i = 0 ; i < n ; i ++ )
        {
            if ( visit[t[i]] )
            {
                if ( chtoch[s[i]] != t[i] )
                    return false ;
            }
            else
            {
                if ( chtoch[s[i]] != ' ' )
                    return false ;
                chtoch[s[i]] = t[i] ;
                visit[t[i]] = true ;
            }
        }
        return true ;
    }
};


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值