博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LeetCode] Word Pattern
阅读量:5021 次
发布时间:2019-06-12

本文共 1768 字,大约阅读时间需要 5 分钟。

Word Pattern

Total Accepted: 4627 Total Submissions: 17361 Difficulty: Easy

 

Given a pattern and a string str, find if str follows the same pattern.

Examples:

  1. pattern = "abba", str = "dog cat cat dog" should return true.
  2. pattern = "abba", str = "dog cat cat fish" should return false.
  3. pattern = "aaaa", str = "dog cat cat dog" should return false.
  4. pattern = "abba", str = "dog dog dog dog" should return false.

 

Notes:

  1. patterncontains only lowercase alphabetical letters, and str contains words separated by a single space. Each word in str contains only lowercase alphabetical letters.
  2. Both pattern and str do not have leading or trailing spaces.
  3. Each letter in pattern must map to a word with length that is at least 1.

 

Credits:

Special thanks to  for adding this problem and creating all test cases.

 

/** * @param {string} pattern * @param {string} str * @return {boolean} */var wordPattern = function(pattern, str) {    var s_to_p = {};    var p_to_s = {};    var pi = 0;    var si = 0;    if (!pattern || !str) return false;    while (pi < pattern.length) {        if (si >= str.length) return false;        var word = "";        var pt = pattern[pi];        while (si < str.length && str[si] != " ") {            word += str[si];            si++;        }        si++;        if (!s_to_p[word]) {            s_to_p[word] = pattern[pi];        }        else {            if (s_to_p[word] != pattern[pi]) return false;        }                if (!p_to_s[pt]) {            p_to_s[pt] = word;        }        else {            if (p_to_s[pt] != word) return false;        }        pi++;    }    if (si < str.length) return false;    return true;};

 

最简单的方法利用两个哈希表做双向的对应,主要容易错的是在各种edge cases,比如pattern 和 str 长度不对应,为空等。

 
 

转载于:https://www.cnblogs.com/agentgamer/p/4864400.html

你可能感兴趣的文章
笨办法学Python——学习笔记2
查看>>
iOS 通知的使用
查看>>
leetcode - Remove Duplicates from Sorted Array II
查看>>
2-11 十六进制
查看>>
tmux
查看>>
Js 替代
查看>>
pytorch之Resize()函数
查看>>
(转)Ceph分布式存储-运维操作笔记
查看>>
<一> 初探opengl,环境opengl开发环境
查看>>
HTML随记
查看>>
window+Apache+php+mysql注意事项
查看>>
Java算法题-删除有序数组中的重复元素
查看>>
记录一些常用的三角公式
查看>>
【DP】组合数字
查看>>
silverlight 后台相关代码知识点
查看>>
linux限制用户内存使用
查看>>
多目标追踪工具vatic安装教程
查看>>
磁盘分区工具之取消Acronis Os Select开机启动
查看>>
[Jobdu] 题目1510:替换空格
查看>>
chrome extension setUpdateUrlData 使用
查看>>