首页 > 其他分享 >leedcode-同构字符串

leedcode-同构字符串

时间:2024-03-09 21:55:16浏览次数:12  
标签:同构 return 映射 leedcode len dict 字符串 match

自己写的:

class Solution:
    def isIsomorphic(self, s: str, t: str) -> bool:
        # 使用 match 函数分别检查 s 到 t 和 t 到 s 的映射关系
        res_a = self.match(s, t)
        res_b = self.match(t, s)
        
        # 如果两个方向的映射关系都成立,则说明字符串是同构的
        if res_a and res_b:
            return True
        else:
            return False

    def match(self, s, t):
        s_len = len(s)
        t_len = len(t)
        
        # 如果两个字符串长度不相等,直接返回 False
        if s_len != t_len:
            return False

        match_list = dict()  # 用于存储字符映射关系的字典

        # 遍历字符串 s 中的每个字符
        for i in range(s_len):
            # 如果当前字符不在映射字典中,添加映射关系
            if s[i] not in match_list:
                match_list.update({s[i]: t[i]})

        # 再次遍历字符串 s,检查映射关系是否符合
        for i in range(s_len):
            if match_list[s[i]] != t[i]:
                return False  # 如果映射关系不符合,返回 False

        return True  # 如果所有映射关系都符合,返回 True

一个新想法,检查双向映射关系  若映射关系相等  根据映射关系构建新字符串  再检查字符串是否相等:

class Solution:
    def isIsomorphic(self, s: str, t: str) -> bool:
        s_len = len(s)
        t_len = len(t)
        match_dict_s = dict()
        match_dict_t = dict()

        # 检查字符串长度是否相等
        if s_len != t_len:
            return False

        # 构建 s 到 t 的映射关系
        for i in range(s_len):
            if s[i] not in match_dict_s:
                match_dict_s.update({s[i]: t[i]})

        # 构建 t 到 s 的映射关系
        for i in range(t_len):
            if t[i] not in match_dict_t:
                match_dict_t.update({t[i]: s[i]})

        # 构建 t 到 s 的反向映射关系
        match_dict_t_swap = {v: k for k, v in match_dict_t.items()}

        # 检查 s 到 t 和 t 到 s 的映射关系是否相等
        if match_dict_s != match_dict_t_swap:
            return False
        else:
            s_new = ''

            # 构建新的字符串 s_new
            for i in range(s_len):
                s_new = s_new + match_dict_s[s[i]]

            # 检查新构建的字符串是否等于 t
            return s_new == t

 

标签:同构,return,映射,leedcode,len,dict,字符串,match
From: https://www.cnblogs.com/yyyjw/p/18063426

相关文章

  • 字符串
    一、反转字符串1:类似反转链表,双指针2:k值反转:每隔2k个字符的前k个字符进行反转,双指针 二、替换数字正则匹配,但要运用substring将需要的部分分出来或是指针。对于线性数据结构,填充或者删除,后序处理会高效的多。 三、反转字符单词需要删除多余空格,,然后反转 四、右......
  • python Ai 应用开发基础训练,字符串,字典,文件
    --------------------------------------  编程能是大模型应用的天花板..................................................................所以要好好将大模型应用在企业一定要好好练好最看不起的一环,基础能力字符串处理 本文档来自老男孩培训Alex课程记录,我在2017年......
  • leedcode-移除链表元素
    自己写的:#Definitionforsingly-linkedlist.#classListNode:#def__init__(self,val=0,next=None):#self.val=val#self.next=nextclassSolution:defremoveElements(self,head:Optional[ListNode],val):#初始化一个......
  • Java登陆第三十二天——ES6(一)let、const、模板字符串、解构表达式、箭头函数
    所谓ECMAScript6也就是JS6。这次更新带来了大量的新特性,使JS代码更简洁,更强大。复习JS请走:JS入门JS6文档请走:JS6菜鸟教程ES6新增了let和const关键字,用作声明变量let相较于var,let声明的变量更规范。ES6更推荐使用let。let不可重复声明let可以作为成员变量:(let遇见非函数......
  • .net api接口接收字符串或者xml
    a///<summary>///接收字符串或者xml///</summary>///<returns></returns>[HttpPost]publicasyncTask<JsonResult>AcceptXMLOrString(){varlen=Convert.ToInt32(HttpContext.Request.ContentLength);byte[]byt=newbyte......
  • 工作常用的EXCEL公式 | 将一个字符串中的文本和数字进行拆分
    需求:将A列拆分成B、C列 公式:=LEFT(A2,2*LEN(A2)-LENB(A2))=RIGHT(A2,LENB(A2)-LEN(A2)) 函数用法说明: ......
  • 7-1 jmu-python-输入输出-计算字符串中的数
    7-1jmu-python-输入输出-计算字符串中的数分数10全屏浏览切换布局作者 郑如滨单位 集美大学将字符串中的每个数都抽取出来,然后统计所有数的个数并求和。输入格式:一行字符串,字符串中的数之间用1个空格或者多个空格分隔。输出格式:第1行:输......
  • day 05-4 数据类型(字符串)
    4.6字符串独有功能练习题#1.写代码实现判断用户输入的值否以"al"开头,如果是则输出"是的",否则输出"不是的"data=input("请输入您的用户名:")ifdata.startswith("al"):print("是的")else:print("不是的")#2.写代码实现判断用户输入的值否以"ab&......
  • Golang(Go语言)字符串转时间格式封装以及填坑
    先看代码:packagemainimport( "fmt" "time")funcmain(){ timeStr:="2021-05-2100:00:00" utcTime,_:=time.Parse(time.DateTime,timeStr) fmt.Println(utcTime)fmt.Println(utcTime.Local())}执行结果:从这里可以看出,字符串转换为时......
  • 字符串随笔
    读字符串函数fgets功能:从文件中读取字符串,每次只读取一行。注意:fgets每次最多只能读取n-1个字2.符,第n个为NULL。当遇到换行符或者EOF时,即使当前位置在n-1之前也读出结束。若函数返回成功,则返回字符串数组str的首地址。例:小L很喜欢听私人笑声,可是有些歌曲他没有夹带私人笑......