[LeetCode]205. 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.
题目大意:给定两个字符串s和t,判断它们是否同构。同构的意思是t可以由s替换字符得到

样例

Example 1:

Input: s = “egg”, t = “add”
Output: true
Example 2:

Input: s = “foo”, t = “bar”
Output: false
Example 3:

Input: s = “paper”, t = “title”
Output: true

python解法

class Solution:
    def isIsomorphic(self, s: str, t: str) -> bool:
        S, T = {} ,{}
        for i,(a,b) in enumerate(zip(s,t)):
            if a not in S: S[a] = i
            if b not in T: T[b] = i
        return all([S[s[i]] == T[t[i]] for i in range(len(s))])

Runtime: 48 ms
Memory Usage: 14.3 MB
题后反思:

  1. 如果出现相同的字符,那么只保留第一次出现的字符的下标
  2. all函数是只有当可迭代对象中全部元素都为true时才返回true

C语言解法

bool isIsomorphic(char * s, char * t){
    int str1[256]={'\0'},str2[256]={'\0'};
    if (!strlen(s) || !strcmp(s, t))
        return true;
    int len = strlen(s);
    for (int i=0;i<len;i++)
    {
        if (str1[s[i]] == '\0')
            str1[s[i]] = i;
        if (str2[t[i]] == '\0')
            str2[t[i]] = i;
    }
    for (int i=0;i<len;i++)
    {
        if (str1[s[i]] != str2[t[i]])
            return false;
    }
    return true;
}

Runtime: 4 ms, faster than 77.78% of C online submissions for Isomorphic Strings.
Memory Usage: 7.2 MB, less than 100.00% of C online submissions for Isomorphic Strings.
题后反思:无

文中都是我个人的理解,如有错误的地方欢迎下方评论告诉我,我及时更正,大家共同进步

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值