ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

[leetcode/lintcode 题解] Uber 面试题:字模式 II

2020-11-06 11:03:18  阅读:240  来源: 互联网

标签:Uber 面试题 word string 题解 mapping str pattern return


给定一个​pattern​和一个字符串​str​,查找​str​是否遵循相同的模式。 这里遵循的意思是一个完整的匹配,在一个字母的​模式​和一个非空的单词​str​之间有一个双向连接的模式对应。(如果​a​对应​s​,那么​b​不对应​s​。例如,给定的模式= ​"ab"​, str = ​"ss"​,返回​false​)。   在线评测地址:领扣题库官网     样例1 输入: pattern = "abab" str = "redblueredblue" 输出: true 说明: "a"->"red","b"->"blue" 样例2 输入: pattern = "aaaa" str = "asdasdasdasd" 输出: true 说明: "a"->"asd" 样例3 输入: pattern = "aabb" str = "xyzabcxzyabc" 输出: false   题解:九章算法班中讲过的深度优先搜索算法。 这个题不能使用动态规划或者记忆化搜索,因为参数列表中 mapping 和 used 无法记录到记忆化的哈希表中。   class Solution:     """     @param pattern: a string,denote pattern string     @param str: a string, denote matching string     @return: a boolean     """     def wordPatternMatch(self, pattern, string):         return self.is_match(pattern, string, {}, set())       def is_match(self, pattern, string, mapping, used):         if not pattern:             return not string                      char = pattern[0]         if char in mapping:             word = mapping[char]             if not string.startswith(word):                 return False             return self.is_match(pattern[1:], string[len(word):], mapping, used)                      for i in range(len(string)):             word = string[:i + 1]             if word in used:                 continue                          used.add(word)             mapping[char] = word                          if self.is_match(pattern[1:], string[i + 1:], mapping, used):                 return True                          del mapping[char]             used.remove(word)                      return False 更多题解参考:九章官网solution    

标签:Uber,面试题,word,string,题解,mapping,str,pattern,return
来源: https://www.cnblogs.com/lintcode/p/13935752.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有