当前位置: 首页 > news >正文

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 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.


判断同构字符串。 就是两个字符串长度相同,并且每一位被相同的字符替代后所得的新字符串相等,这样的字符串是同构字符串。




思路:
长度不等直接返回false。
两个哈希表hash1 和has2。 hash1 : 遍历第一个字符串的同时,记录当前字符最后一次出现的位置。
如果hash1中包含了s[i],那么hash2也一定要包含t[i]并且hash1[s[i]](s[i]最后一次出现的位置)也要等于hash2[t[i]](t[i]最后一次出现的位置)。
如果hash1中没有包含s[i],那么hash2也一定不能包含t[i]。


实现代码:





public class Solution {
    public bool IsIsomorphic(string s, string t) {
        var hash1 = new Dictionary<char, int>();
		var hash2 = new Dictionary<char, int>();
		
		for(var i = 0;i < s.Length; i++){
			if(!hash1.ContainsKey(s[i])){
				hash1.Add(s[i], i);
				if(hash2.ContainsKey(t[i])){
					return false;
				}
				hash2.Add(t[i],i);
			}
			else{
				if(!hash2.ContainsKey(t[i]) || hash2[t[i]] != hash1[s[i]]){
					return false;
				}
				hash1[s[i]] = i;
				hash2[t[i]] = i;
			}
		}
		
		return true;
    }
}


相关文章:

  • LeetCode -- Balanced Binary Tree
  • Linux系统信息查看命令大全
  • LeetCode -- Merge Two sorted lists
  • 汇编语言程序设计的基本方法
  • LeetCode -- Binary Tree Zigzag Level Order Traversal
  • PostgreSQL+PostGIS的使用 1
  • LeetCode -- Compare Version Numbers
  • LeetCode -- Implement Queue using Stacks
  • PostgreSQL+PostGIS的使用 2
  • 有关微软技术方向的最新学习资源【2015-9月】
  • PostgreSQL+PostGIS的使用 3
  • PostgreSQL+PostGIS的使用 4
  • LeetCode -- Longest Substring Without Repeating Characters
  • PostgreSQL+PostGIS的使用 5
  • LeetCode -- Implement strStr()
  • 《Java8实战》-第四章读书笔记(引入流Stream)
  • httpie使用详解
  • JavaScript设计模式系列一:工厂模式
  • JS题目及答案整理
  • Laravel5.4 Queues队列学习
  • React-Native - 收藏集 - 掘金
  • 编写高质量JavaScript代码之并发
  • 动态魔术使用DBMS_SQL
  • 力扣(LeetCode)357
  • 使用API自动生成工具优化前端工作流
  • 提醒我喝水chrome插件开发指南
  • Java数据解析之JSON
  • MyCAT水平分库
  • ​​​​​​​sokit v1.3抓手机应用socket数据包: Socket是传输控制层协议,WebSocket是应用层协议。
  • # Swust 12th acm 邀请赛# [ A ] A+B problem [题解]
  • # 达梦数据库知识点
  • $con= MySQL有关填空题_2015年计算机二级考试《MySQL》提高练习题(10)
  • (01)ORB-SLAM2源码无死角解析-(66) BA优化(g2o)→闭环线程:Optimizer::GlobalBundleAdjustemnt→全局优化
  • (07)Hive——窗口函数详解
  • (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (二)构建dubbo分布式平台-平台功能导图
  • (附源码)php新闻发布平台 毕业设计 141646
  • (附源码)计算机毕业设计SSM在线影视购票系统
  • (更新)A股上市公司华证ESG评级得分稳健性校验ESG得分年均值中位数(2009-2023年.12)
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • (转)C语言家族扩展收藏 (转)C语言家族扩展
  • .net 4.0发布后不能正常显示图片问题
  • .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划
  • .NET委托:一个关于C#的睡前故事
  • @ 代码随想录算法训练营第8周(C语言)|Day53(动态规划)
  • @Controller和@RestController的区别?
  • @Valid和@NotNull字段校验使用
  • [ NOI 2001 ] 食物链
  • [23] 4K4D: Real-Time 4D View Synthesis at 4K Resolution
  • [3300万人的聊天室] 作为产品的上游公司该如何?
  • [ACTF2020 新生赛]Upload 1
  • [ArcPy百科]第三节: Geometry信息中的空间参考解析
  • [ARM]ldr 和 adr 伪指令的区别
  • [autojs]逍遥模拟器和vscode对接