算法-哈希表(同构字符串205)

leetcode题目链接

这道题还是一个哈希表题,思路非常简单,其实你只需要创建两个哈希映射,然后将这两个哈希映射和字符串绑定,最终判断是否满足双向的映射关系。

class Solution {
public:
    bool isIsomorphic(string s, string t) {
       	if(s.length()!=t.length()){
			return false;
		}
		unordered_map<char, char>mapST,mapTS;
		for(size_t i=0;i<s.length();++i){
			char chars=s[i];
			char chart=t[i];
			if(mapST.count(chars)&&mapST[chars]!=chart){
				return false;
			}
			if(mapTS.count(chart)&&mapTS[chart]!=chars){
				return false;
			}
			
			mapST[chars]=chart;
			mapTS[chart]=chars;
		}
    return true;
    }
};

size_t 是一种无符号整数类型,通常用于表示数组或容器的大小和索引。它的大小根据平台不同而不同,但通常是 32 位或 64 位。使用 size_t 可以确保索引操作不会出现负值,并且与平台的内存大小相符。

在循环 for (size_t i = 0; i < s.length(); ++i) 中,i 被声明为 size_t 类型,以便在遍历字符串时与 s.length() 返回的类型匹配。这样做可以避免与不同整数类型之间的比较带来的编译器警告。

代码解释:

  1. 循环遍历字符串:

    for (size_t i = 0; i < s.length(); ++i) {
    

使用 size_t 类型变量 i 遍历字符串 s 的每个字符。

   2.获取当前字符:

char charS = s[i];
char charT = t[i];

charS 是字符串 s 中的当前字符。

charT 是字符串 t 中的对应字符。

3/检查映射关系:

if (mapST.count(charS) && mapST[charS] != charT) {
    return false;
}

如果 charS 已经在 mapST 中有映射,但映射的字符不是 charT,返回 false

4.检查反向映射:

if (mapTS.count(charT) && mapTS[charT] != charS) {
    return false;
}

如果 charT 已经在 mapTS 中有映射,但映射的字符不是 charS,返回 false

5.建立映射关系:

mapST[charS] = charT;
mapTS[charT] = charS;

将 charS 映射到 charT,并且将 charT 映射到 charS,以便记录它们的对应关系。

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Code apprenticeship

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值