欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

LeetCode题目以及答案(7)

程序员文章站 2024-03-22 14:34:46
...

题目:给定一种 pattern(模式) 和一个字符串 str ,判断 str 是否遵循这种模式;这里的 遵循 指完全匹配,例如在pattern里的每个字母和字符串 str 中的每个非空单词存在双向单映射关系。
例如:
1.pattern = “abba”, str = “dog cat cat dog”, 返回true
2.pattern = “abba”, str = “dog cat cat fish”, 返回false.
3.pattern = “aaaa”, str = “dog cat cat dog” , 返回false.
4.pattern = “abba”, str = “dog dog dog dog” , 返回false.
说明:你可以假设 pattern 只包含小写字母, str 包含了由单个空格分开的小写单词。
思路一:利用map()函数在此处涉及到python中find函数,index()函数的用法。

#!/usr/bin/env python
# encoding:utf-8
"""
__author__:adam
单词与字符串之间双向映射
第一种方法
"""

class Solution(object):
    def wordPattern(self,pattern,str):
        """
        :type pattern:str
        :type str:str
        :rtype:bool
        """
        #将字符串按照空格划分存入列表
        words = str.split(" ")
        print pattern,words
        #对words和pattern的长度进行一个简单的判断
        if len(pattern) == len(words):
            #进一步判断是否满足双向单映射的关系
            if map(pattern.find,pattern) == map(words.index,words):
                print True
            else:
                print False
        else:
            print False

if __name__ == "__main__":

    m = Solution()
    str = "dog cat cat dog"
    pattern = "abba"
    m.wordPattern(pattern,str)
    str = "dog cat cat fish"
    pattern = "abba"
    m.wordPattern(pattern,str)
    str = "dog cat cat dog"
    pattern = "aaaa"
    m.wordPattern(pattern,str)
    str = "dog dog dog"
    pattern = "abba"
    m.wordPattern(pattern,str)

LeetCode题目以及答案(7)
涉及知识点:
(1)index()函数主要用于从列表中找出某个值第一个匹配项的索引位置。
a)语法
list.index(obj)
参数:obj–查找对象 返回值:该方法返回查找对象的索引位置,如果没有找到对象则抛出异常。
b)实例
LeetCode题目以及答案(7)
(2)find()函数检测字符串是否包含子字符串str;如果指定beg开始,end结束范围,则检查是否包含在指定范围内,如果包含子字符串则返回开始的索引值,否则返回-1。
a)find()方法的语法
str.find(str,beg=0,end=len(string))
参数:str–指定检索的字符串;beg—开始索引,默认为0;end—-结束索引,默认字符串的长度。
返回值:如果包含子字符串则返回开始的索引值,否则返回-1。
b)实例
LeetCode题目以及答案(7)
还有另外几种简单方法,请参考这里写链接内容