前端算法-单词规律

简介: 前端算法-单词规律

题目

给定一种规律 pattern 和一个字符串 s ,判断 s 是否遵循相同的规律。

输入: pattern = "aaaa", s = "dog cat cat dog"
输出: false

思路一

我们这里可以使用Map进行实现,先声明一个matchMap变量,它的值是Map数据结构的实例,然后在声明一个变量patternArr,它的值是我们对形参pattern使用split方法的返回的数组,然后在声明一个sArr变量,对形参s使用split方法将其返回的数组赋值给sArr变量,然后进行判断当前patternArr数组和sArr数组数据长度是否一致,如果不一致直接返回false,然后对patternArr数组进行循环,在循环中声明pItem变量和sItem变量,他们存储的分别是当前patternArr数组的某一项和当前sArr数组的某一项,然后我们使用Set数据结构中的values方法获取到matchMap变量中的所有value值,在使用Array.from方法将其转换成数组,然后在使用Set数据结构中has方法和数组中的includes方法判断一下当前的pItem变量和sItem变量是否存在于matchMap变量中或者valuesArr数组中,如果存在则返回false,不存在且key值不存在于matchMap变量中则使用set方法把pItem变量当作key,sItem变量当作value存储到matchMap变量中,接下来在判断如果sItem变量不存在且key存在于matchMap变量中返回false,如果最后都没有返回,则直接返回true

var wordPattern = function(pattern, s) {
    let matchMap = new Map()
    let patternArr = pattern.split('')
    let sArr = s.split(' ')
    if(patternArr.length!=sArr.length){
        return false
    }
    for(let i = 0;i<patternArr.length;i++){
        let pItem = patternArr[i]
        let sItem = sArr[i]
        let valuesArr = Array.from(matchMap.values())
        if(!matchMap.has(pItem)&&valuesArr.includes(sItem)){
            return false
        }else if(!matchMap.has(pItem)){
            matchMap.set(pItem,sItem)
        }else if(sItem!=matchMap.get(pItem)){
            return false
        }
    }
    return true
};


相关文章
|
2月前
|
算法 前端开发 数据可视化
数据结构与算法在前端开发中的实际应用
本文将探讨数据结构与算法在前端开发中的实际应用,重点介绍在处理大规模数据、优化性能和提升用户体验方面的具体场景和解决方案。
|
4天前
|
数据可视化 算法
R语言Apriori算法关联规则对中药用药复方配伍规律药方挖掘可视化(下)
R语言Apriori算法关联规则对中药用药复方配伍规律药方挖掘可视化(下)
|
4天前
|
算法 数据可视化 网络可视化
R语言Apriori算法关联规则对中药用药复方配伍规律药方挖掘可视化(上)
R语言Apriori算法关联规则对中药用药复方配伍规律药方挖掘可视化
R语言Apriori算法关联规则对中药用药复方配伍规律药方挖掘可视化(上)
|
17天前
|
算法 前端开发
前端算法 岛屿的最大面积 DFS(深度优先搜索)
前端算法 岛屿的最大面积 DFS(深度优先搜索)
11 0
|
4月前
|
算法 前端开发
前端算法-路径总和
前端算法-路径总和
|
4月前
|
算法 前端开发
前端算法-平衡二叉树
前端算法-平衡二叉树
|
4月前
|
算法 前端开发
前端算法-将有序数组转换为二叉搜索树
前端算法-将有序数组转换为二叉搜索树
|
4月前
|
算法 前端开发
前端算法-对称二叉树
前端算法-对称二叉树
|
4月前
|
存储 算法 前端开发
前端算法- 二叉树的中序遍历
前端算法- 二叉树的中序遍历
|
4月前
|
存储 算法 前端开发
前端算法-合并两个有序数组
前端算法-合并两个有序数组