leetcode:同构字符串(详解)

前言:内容包括:题目,代码实现,大致思路,代码解读

题目:

给定两个字符串 s 和 t ,判断它们是否是同构的。

如果 s 中的字符可以按某种映射关系替换得到 t ,那么这两个字符串是同构的。

每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。

示例 1:

输入:s = "egg", t = "add"
输出:true
示例 2:

输入:s = "foo", t = "bar"
输出:false
示例 3:

输入:s = "paper", t = "title"
输出:true

代码实现:

bool isIsomorphic(char * s, char * t)
{
    int len = strlen(s);
    char arr1[200] = {0};
    char arr2[200] = {0};
    int i = 0;
    for(i=0;i

大致思路:

leetcode:同构字符串(详解)_第1张图片

 e--->a

g--->d

g--->d

e只对应a,g只对应d

都是一一对应

leetcode:同构字符串(详解)_第2张图片

 f--->b

o--->a

o--->r

f只对应b 

o对应了a,对应了r   由于不是一一对应,所以不是同构

1 同时遍历s和t两个字符串,以遍历到的s的字符作为下标(字符的本质是ASCII码值),若它唯一标识的空间内没有置入t的字符,则将同位置的t字符串字符置入这个空间,同时标记这个t字符串中的字符,表示它已经有对应关系

2 若是s的字符为下标唯一标识的空间内有字符了,则判断这个空间的字符是否和现在遍历到的t的字符相同,若是不同,则对应不唯一,不是同构字符串

代码解读:

part 1

    char arr1[200] = {0};
    char arr2[200] = {0};

arr1:存储s的字符的对应对象

arr2:标识t的字符是否有对应关系

part 2

    for(i=0;i

你可能感兴趣的:(leetcode,leetcode)