Given a pattern and a string str,
find if str follows the same pattern.
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:
patterncontains only lowercase alphabetical letters, andstrcontains words separated by a single space. Each word instrcontains only lowercase alphabetical letters.- Both
patternandstrdo not have leading or trailing spaces. - Each letter in
patternmust map to a word with length that is at least 1.
答案:
/**
* @param {string} pattern
* @param {string} str
* @return {boolean}
*/
var wordPattern = function(pattern, str) {
//返回结果
var result = true;
//分割数组
var patternArray = pattern.split("");
var strArray = str.split(" ");
if (patternArray.length != strArray.length){
result = false;
}
//数组之间的关系
var relationship = [];
var relationshipNegative = [];
//如果相等,就放入relationship数组中
//如果不相等,就放入relationshipNegative数组中
for (var i = 0; i < patternArray.length; i++) {
for (var j = 1; j < patternArray.length; j++) {
if ( i!==j ) {
if (patternArray[i] === patternArray[j]) {
relationship.push({i:i,j:j});
}
else{
relationshipNegative.push({i:i,j:j});
}
}
}
}
//判断是否符合相等关系的描述,不符合返回false
for (var k = 0; k < relationship.length; k++) {
// console.warn(strArray[relationship[k].i] !== strArray[relationship[k].j]);
if (strArray[relationship[k].i] !== strArray[relationship[k].j] ) {
// console.log("become false");
result = false;
}
}
//判断是否符合不相等关系的描述,不符合返回false
for (var h = 0; h < relationshipNegative.length; h++) {
if (strArray[relationshipNegative[h].i] === strArray[relationshipNegative[h].j] ) {
result = false;
}
}
return result;
};原题地址:
https://leetcode.com/problems/word-pattern/
本文介绍了一种用于检查字符串是否遵循给定模式的算法。通过多个示例解释了该算法的工作原理,并提供了一段详细的JavaScript代码实现,展示了如何比较模式与字符串的关系。
1315

被折叠的 条评论
为什么被折叠?



