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