从国庆到现在都没更新 这个月也真是过的凄惨 前半个月一直在看病 忧郁了大半个月 还好是缓过来了 很感谢那段时间朋友们的陪伴 以后要更爱自己才是 嗯 之后看了一周多的hadoop 无奈总是出现各种问题 其实真的很想感受下hadoop的神奇之处 不过还是暂且搁置吧 缓几天再去看也许问题就解决了呢也不一定 今天刚忙完 加入了一个新的team 感觉很棒 嗯 总有一种离自己梦想更进一步的感觉 但是内心却还是蛮忧伤的 也许这段时间的力不从心让自己有点失望吧 希望自己早日康复 还有很多梦想想要去实现呢 有些梦想就是给我一百万个理由我也不要放弃
嗯 言归正传 从今天起 就开始看看LeetCode中的算法 首先还是从简单的开始~
WordPattern
(1) 问题重述
给定一个pattern和一个str,判断输入的str是否满足相同的pattern。
例如:
pattern = "abba", str = "dog cat cat dog" should return true.
pattern = "abba", str = "dog cat cat fish" should return false.
pattern = "aaaa", str = "dog cat cat dog" should return false.
pattern = "abba", str = "dog dog dog dog" should return false.
(2) 问题分析
判断str是否满足相同的pattern,根据所给的实例,该问题必须同时满足两个条件:pattern和str的长度相同;pattern中相同单词所在的位置对应于str中也分别为相同的单词。
两个条件必须同时满足,长度相同可直接用len(),对于第二点,首先想到的是dict,进而为了简化代码,结合set()和zip()进一步优化,首先得到的代码如下:
class Solution(object): def wordPattern(self, pattern, str): """ :type pattern: str :type str: str :rtype: bool """ self.pattern = pattern self.str = str words = str.split() if len(pattern) != len(str) or set(zip(pattern,words)) != set(pattern): return False return True
进一步优化得到:
class Solution(object): def wordPattern(self, pattern, str): """ :type pattern: str :type str: str :rtype: bool """ self.pattern = pattern self.str = str words = str.split() return len(pattern) != len(str) or set(zip(pattern,words)) != set(pattern)
结合运行时间,说明代码确实有了一定程度的优化。嗯,我也只能做到这个程度的。
本想着再看看其它东西的,无奈状况并不是很理想,嗯,早点休息,晚安。
希望明天一切都会好起来~