Word Pattern
来源:互联网 发布:db2导出表数据命令 编辑:程序博客网 时间:2024/06/13 09:28
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.
**
解题思路:
**
- 分别建立map和mapStr两个哈希表;
- map用于存储 pattern中不同字符对应的index;
- mapStr用于存储str中不同字符串对应的index,注意将str字符串存储与字符串数组strArr[]中;
- 依次遍历字符串pattern的i位置时,向map哈希表中加入key元素的同时比较对应位置的strArr[i]中字符串是否存在于mapStr哈希表中;并且mapStr[key]前一个位置处的index要与map[key]前一位置处的index相同;
具体实现如下
var wordPattern = function(pattern, str) {
if((!pattern.length&&str.length)||(pattern.length&&!str.length))//任何一个字符串为空,另一个不为空,都应该返回false
{
return false;
}
var map = {},
mapStr = {},
symbol,
len = pattern.length;
var strArr = str.split(” “);//将str字符串转换为字符数组
if(strArr.length !== len )
{
return false;
}
//建立哈希表 格式{b:[0,3],a[1,2]}
for(var i = 0; i < len; i++)
{
symbol = pattern.substr(i,1); //依次取出pattern中的元素symbol
var strEle = strArr[i];//取出字符数组中对应下标元素if(map[symbol]) //字符已存在哈希表中{ if(mapStr[strEle]) //对应查找mapStr数组中的strEle元素是存在 { var strIndexArr = mapStr[strEle]; //查找mapStr哈希表中strEle元素的下标数组 if((strIndexArr.length-1) !== (map[symbol].length-1))//比较mapStr[strEle]与map[symbol两个下标数组是否相同 { return false; } mapStr[strEle].push(i); map[symbol].push(i); //在哈希表中存储字符对应的下标 }else{ return false; }}else{ map[symbol] = []; map[symbol].push(i); if(!mapStr[strEle]) { mapStr[strEle] = []; mapStr[strEle].push(i); }else{ return false; }}
}
// for(var j=0,lenArr=strArr.length;j
这里写代码片
- Word Pattern
- Word Pattern
- Word Pattern
- Word Pattern
- Word Pattern
- Word Pattern
- Word Pattern
- Word Pattern
- Word Pattern
- Word Pattern
- Word Pattern
- Word Pattern
- word pattern
- Word Pattern
- Word Pattern
- Word Pattern
- Word Pattern
- Word Pattern
- roscore启动问题 No handlers could be found for logger "roslaunch"
- 记自己今天在金山云数据分析岗的面试
- 编译ffmpeg无法生成ffplay的问题解决
- Webstroman9.0.3版本一步搞定汉化问题
- Java数据结构之递归与三角函数的运用,使用3种方法实现三角
- Word Pattern
- linux学习1:Linux的启动过程
- HTML5 Web Workers
- Android 开发的一些问题
- 用图片创建动画
- Struts2框架详解
- Composer自动加载功能
- C/C++中的类型转换
- application.getInitParameter()来获取参数