LeetCode Isomorphic Strings

本文探讨了如何通过映射关系判断两个字符串是否具有Isomorphic特性,详细介绍了使用Map数据结构进行匹配操作的方法,并通过实例演示了判断流程。包括对特殊情况的处理,如重复字符的映射一致性验证。

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

题目:

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.

题意:

就是给定两个字符串,判断这两个字符串的结构是否是一样的。那么这道题和之前有一道给定一个pattern,然后判断输入的字符串是否符合pattern的那个模式。当时那个题是采用一个map + set来做,就是首先用一个map来一一对应pattern和字符串的字符,当出现重复的pattern时,查看字符串的字符是否与之前出现的一致。那么联想到可以采用map来一一对应的做,此题我就考虑了也用map来做,通过将两个字符串中的每一个对应位置上的字符用map一一对应的存,然后当出现重复的时候,再判断是否是曾经出现过的,如果是曾经出现过的,那么就是true,否则就是false;但是有一种情况要当心,也就是如果输入的是ab,那么第二个字符串如果是aa,就还得考虑第二个字符是不是与之前的字符一致,如果一致,那么也返回false。

public static boolean isIsomorphic(String s, String t)
	{
		Map<Character,Character> map = new HashMap<Character,Character>();
		int length = s.length();
		for(int i = 0; i < length; i++)
		{
			if(!map.containsKey(s.charAt(i)) && !map.containsValue(t.charAt(i)))
			{
				map.put(s.charAt(i), t.charAt(i));
				//System.out.println(s.charAt(i) + "   " + map.get(s.charAt(i)));
			}
			else if(!map.containsKey(s.charAt(i)) && map.containsValue(t.charAt(i))) //这种情况是针对,ab ,aa那么就是返回false
				return false;
			else if(map.containsKey(s.charAt(i)) && map.get(s.charAt(i)) != t.charAt(i))
				return false;
		}
		return true;
	}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值