【LeetCode】290. Word Pattern

GitHub:https://github.com/BadWaka/leet-code-waka

思路

205. Isomorphic Strings 的思路相同

新建四个数组
mapA,mapB用来放置字符串中的元素,
arrA,arrB用来记录字符串在map中对应的位置

两次循环分别遍历两个字符串,并进行放置元素到map数组的操作和在arr中记录位置,完事后判断arrA和arrB是不是相等,如果相等,则返回true

测试示例



代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>290. Word Pattern</title>
</head>
<body>
<p>
    Given a pattern and a string str, find if str follows the same pattern.
    <br/>
    Here follow means a full match, such that there is a bijection between a letter in pattern and a non-empty word in
    str.
    <br/>
    Examples:
    <br/>
    pattern = "abba", str = "dog cat cat dog" should return true.
    <br/>
    pattern = "abba", str = "dog cat cat fish" should return false.
    <br/>
    pattern = "aaaa", str = "dog cat cat dog" should return false.
    <br/>
    pattern = "abba", str = "dog dog dog dog" should return false.
    <br/>
    Notes:
    <br/>
    You may assume pattern contains only lowercase letters, and str contains lowercase letters separated by a single
    space.
</p>
<script>
    /**
     * @param {string} pattern
     * @param {string} str
     * @return {boolean}
     */
    var wordPattern = function (pattern, str) {
        var mapA = [], mapB = [];
        var arrA = [], arrB = [];
        var i;
        for (i = 0; i < pattern.length; i++) {
            if (mapA.indexOf(pattern[i]) === -1) {
                mapA.push(pattern[i]);
            }
            arrA.push(mapA.indexOf(pattern[i]));
        }
        var strArr = str.split(' ');
        for (i = 0; i < strArr.length; i++) {
            if (mapB.indexOf(strArr[i]) === -1) {
                mapB.push(strArr[i]);
            }
            arrB.push(mapB.indexOf(strArr[i]));
        }
        console.log('mapA = ' + JSON.stringify(mapA));
        console.log('arrA = ' + JSON.stringify(arrA));
        console.log('mapB = ' + JSON.stringify(mapB));
        console.log('arrB = ' + JSON.stringify(arrB));

        /**
         * 判断数组是否相等(简单数组)
         * @param arrA
         * @param arrB
         */
        function isArrayEqual(arrA, arrB) {
            return JSON.stringify(arrA) === JSON.stringify(arrB);
        }

        // 判断arrA和arrB是否相等
        return isArrayEqual(arrA, arrB);
    };

    var pattern = "abba", str = "dog cat cat dog";
    console.log(wordPattern(pattern, str));

</script>
</body>
</html>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • leetcode刷题记录本文记录一下leetcode刷题记录,记录一下自己的解法和心得。 LeetCode Two...
    EarthChen阅读 8,817评论 0 6
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,798评论 19 139
  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 14,354评论 0 33
  • 字符的 Unicode 表示法 codePointAt() String.fromCodePoint() 字符串的...
    卞卞村长L阅读 4,125评论 0 0
  • 第二章 远方,闪着微光 十年一次的校庆到了,全校张灯结彩。 洛海还是穿着一件白衬衫,光圈打在他身上,台下是黑...
    七号LIFE阅读 2,682评论 0 1