LeetCode - 205. Isomorphic Strings

本文详细解析LeetCode上的205题“同构字符串”问题,介绍了解题思路及C++实现方法。通过使用map记录字符对应的位置来判断两个字符串是否同构,并解释了特殊处理技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目

LeetCode - 205. Isomorphic Strings

题目链接

https://leetcode.com/problems/isomorphic-strings/

参考博客
解题思路

本题要求:若一个字符串将其中若干字符全部替换,能得到另一个字符串,则这两个字符串同构。

解题:用map记录当前字符在之前出现(若出现过)的位置,即上一次的位置。

注:此题记录上一次的位置加了1,i.e. + 1 +1 +1,是避开诸如测试点"aa, ab",因为第1个字符串中的第2个’a’与第2个字符串中的’b’虽然上一个位置均为0,但是意义不同,因为’b’上一个位置不存在,map默认为0,而’a’不一样。

解题源码
class Solution {
public:
    bool isIsomorphic(string s, string t) {
        map<char, int> ms, mt;
        for (int i = 0; i < s.size(); i++){
            if (ms[s[i]] != mt[t[i]]) return false;
            ms[s[i]] = mt[t[i]] = i + 1;
        }
        return true;
        
    }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值