• 【Python3】【力扣题】290. 单词规律


    【力扣题】题目描述:

    【Python3】代码:

    1、解题思路:哈希。两个字典。分别记录字母对应的单词和单词对应的字母,若不是对应的,则返回False。

    知识点:字符串.split():将字符串按指定字符拆分成列表。没有参数则以空格拆分。

                   len(序列):获得序列(字符串、列表、集合等)的长度,即序列内有多少元素。

                   zip(序列1, 序列2):将两个序列按对应位置组成元组形式的可迭代对象

                   元素 in 字典:判断元素是否在字典的键中。

                  字典[键]=值:给字典中的键修改值。或往字典中添加键值对

    注解:d1, d2 = {}, {} 即 d1={};d2={} 即变量d1、d2均为字典。

    1. class Solution:
    2. def wordPattern(self, pattern: str, s: str) -> bool:
    3. s1 = s.split()
    4. if len(pattern) != len(s1): return False
    5. d1, d2 = {}, {}
    6. for x,y in zip(pattern,s1):
    7. if (x in d1 and d1[x] != y) or (y in d2 and d2[y] != x):
    8. return False
    9. d1[x] = y
    10. d2[y] = x
    11. return True

    2、解题思路:哈希。一个字典。记录字母对应的单词,若不是对应的,则返回False。

    知识点:enumerate(序列):返回可迭代的序列下标和下标对应的元素。

                   元素 not in 字典:判断元素是否不在字典的键中。

                    字典.values():返回可迭代的字典的所有值。

                    序列[下标]:通过下标获取序列(字符串、列表、元组)中的元素。

    注解:for循环中if下的continue:若满足条件,直接进入下一轮循环(若循环内continue后面还有代码,则跳过)。

    1. class Solution:
    2. def wordPattern(self, pattern: str, s: str) -> bool:
    3. s1 = s.split()
    4. if len(pattern) != len(s1): return False
    5. d = {}
    6. for i,x in enumerate(pattern):
    7. if x not in d and s1[i] not in d.values():
    8. d[x] = s1[i]
    9. elif x in d and s1[i] in d.values() and d[x] == s1[i]:
    10. continue
    11. else:
    12. return False
    13. return True

    3、解题思路:若规律对应,则每个相同位置的字母和单词首次出现的位置应该相同,若不同,则不遵循相同的规律。

    知识点:字符串.find(元素):查找元素,返回元素在字符串中第一次出现的位置。

                  序列.index(元素):返回元素在序列中(字符串、列表等)第一次出现的位置。

                 注:若没有找到元素,find返回-1,而index报错。

    1. class Solution:
    2. def wordPattern(self, pattern: str, s: str) -> bool:
    3. s1 = s.split()
    4. if len(pattern) != len(s1): return False
    5. for i,x in enumerate(pattern):
    6. if pattern.find(x) != s1.index(s1[i]):
    7. return False
    8. return True

    4、解题思路:集合。字母、单词、字母和单词对应的元组形式的可迭代对象,三者去重后的长度应该相同,若不同则不遵循相同的规律。

    知识点:set(...):转为集合,集合中的元素不重复。

    1. class Solution:
    2. def wordPattern(self, pattern: str, s: str) -> bool:
    3. s1 = s.split()
    4. return len(pattern) == len(s1) and len(set(pattern)) == len(set(s1)) == len(set(zip(pattern,s1)))

  • 相关阅读:
    Vue 打包优化之 externals 抽离公共的第三方库
    ZGC在三色指针中的应用
    transformers 阅读:Llama 模型
    跨境电商卖家培训影响视频推荐的原因
    高等教育学:态度与品德的形成
    剖析SGI STL内存池总结
    PDF转JPG
    基于Android驾校驾考助手 java驾照考试系统
    语法复习之C语言与指针
    Linux:ip:rx_dropped; 丢包
  • 原文地址:https://blog.csdn.net/yannan20190313/article/details/134413558