LeetCode -- Word Pattern
来源:互联网 发布:神周瑜皮肤 知乎 编辑:程序博客网 时间:2024/05/17 05:06
题目描述:
Given a pattern and a string str, find if str follows the same pattern.
Here follow means a full match, such that there is a bijection between a letter in pattern and a non-empty word in str.
Examples:
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.
Notes:
You may assume pattern contains only lowercase letters, and str contains lowercase letters separated by a single space.
给一个模式字符串:pattern,和一个包含了很多单词由空格隔开组成的字符串str,判断是否符合同样的结构。
符合同样的结构即每个单词的对应是不变的。
思路:
1. 如果长度不一样肯定不同构。
2. 设pattern[i]为pattern中的第i个字符,arr为str分隔后的单词数组。
使用两个字典dict1和dict2,遍历pattern过程中,如果pattern[i]在dict1中存在,那么arr[i]在dict2中也一定存在,并且dict1[pattern[i]]与arr[i]是相等的;而如果pattern[i]在dict1中不存在,那么arr[i]在dict2中也一定不应该存在。
实现代码:
Given a pattern and a string str, find if str follows the same pattern.
Here follow means a full match, such that there is a bijection between a letter in pattern and a non-empty word in str.
Examples:
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.
Notes:
You may assume pattern contains only lowercase letters, and str contains lowercase letters separated by a single space.
给一个模式字符串:pattern,和一个包含了很多单词由空格隔开组成的字符串str,判断是否符合同样的结构。
符合同样的结构即每个单词的对应是不变的。
思路:
1. 如果长度不一样肯定不同构。
2. 设pattern[i]为pattern中的第i个字符,arr为str分隔后的单词数组。
使用两个字典dict1和dict2,遍历pattern过程中,如果pattern[i]在dict1中存在,那么arr[i]在dict2中也一定存在,并且dict1[pattern[i]]与arr[i]是相等的;而如果pattern[i]在dict1中不存在,那么arr[i]在dict2中也一定不应该存在。
实现代码:
public class Solution { public bool WordPattern(string pattern, string str) { var i = 0; var arr = str.Split(' ').Where(x=>!string.IsNullOrWhiteSpace(x)).ToList(); var dict1 = new Dictionary<char, string>(); var dict2 = new Dictionary<string, char>(); if(pattern.Length != arr.Count){ return false; } while(i < pattern.Length) { if(!dict1.ContainsKey(pattern[i])){ if(dict2.ContainsKey(arr[i])){ return false; } dict1.Add(pattern[i] , arr[i]); dict2.Add(arr[i], pattern[i]); } else{ if(!dict2.ContainsKey(arr[i])){ return false; } if(arr[i] != dict1[pattern[i]]){ return false; } } i++; } return true; }}
0 0
- leetcode | Word Pattern
- 【leetcode】290. Word Pattern
- leetcode 290: Word Pattern
- [Leetcode]Word Pattern
- [leetcode 290]Word Pattern
- LeetCode 290 Word Pattern
- 【leetcode】290. Word Pattern
- [LeetCode 290] Word Pattern
- leetcode 290 Word Pattern
- LeetCode 2 Word Pattern
- leetcode word-pattern
- leetcode: Word Pattern
- leetcode:Word Pattern
- [Leetcode]Word Pattern
- LeetCode Word Pattern
- LeetCode-Word Pattern
- LeetCode:Word Pattern
- leetcode之Word Pattern
- FlappyBird—仅供娱乐
- UIWebView添加头部视图
- Nodejs-connect 中间件
- 三种web性能压力测试工具
- 【C++】基础知识—内联(置)函数及register关键字
- LeetCode -- Word Pattern
- perror(const char)
- 我的博客开张了!
- LeetCode -- Word Search
- Java - 关键字 final 的用法总结
- 交叉验证之我见
- 在北大校园BBS引起轰动的一篇文章
- Apache Shiro的(what、why、who)保护你的应用程序
- 逻辑回归、决策树和支持向量机(I)