力扣刷题Days7--205.单词规律(js)

本文介绍了如何使用JavaScript解决题目中的单词规律匹配问题,通过类比字符串同构和Map对象的has(),set(),get()方法来确定输入字符串s是否遵循给定的pattern规则。
摘要由CSDN通过智能技术生成

目录

1,题目--单词规律

1.1类比题目--同构字符串

2,代码

3,学习与总结

3.1 Map()基础知识

3.2题目分析

要建立pattern中单词和s中字符串的一一对应关系;


1,题目--单词规律

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

这里的 遵循 指完全匹配,例如, pattern 里的每个字母和字符串 s 中的每个非空单词之间存在着双向连接的对应规律。

1.1类比题目--同构字符串

给定两个字符串 s 和 t ,判断它们是否是同构的。

如果 s 中的字符可以按某种映射关系替换得到 t ,那么这两个字符串是同构的。

每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。



详情见该笔记
力扣刷题Days6第二题(js)-CSDN博客


2,代码

/**
 * @param {string} pattern
 * @param {string} s
 * @return {boolean}
 */
var wordPattern = function(pattern, s) {
    const word2ch = new Map();
    const ch2word = new Map();
    const words = s.split(' ');
    if(pattern.length != words.length){
        return false;
    }

    for(const [i,word] of words.entries() ){
        const ch = pattern[i]
        if(word2ch.has(word) && word2ch.get(word)!=ch || ch2word.has(ch)&&ch2word.get(ch)!=word){
            return false;
        }
        word2ch.set(word,ch);
        ch2word.set(ch,word);
    }
    return true;

};

3,学习与总结

3.1 Map()基础知识

Map对象是键值对的集合,其中的键和值都可以是任意类型。

word2ch.has(word)

has(key) 检查word2ch中是否已经包含 word键,返回一个布尔值,用来表明 Map 对象中是否存在与指定的键 key 关联的值;

const map1 = new Map();

map1.set('a', 1);
map1.set('b', 2);
map1.set('c', 3);

console.log(map1.get('a'));
// Expected output: 1

map1.set('a', 97);

console.log(map1.get('a'));
// Expected output: 97
  • 存储数据到 Map 中的方式是使用 set(key, value) 方法;
  • get(key)返回与指定的键 key 关联的值,若不存在关联的值,则返回 undefined;
for(const [i,word] of words.entries() ){
...
...
}

使用for...of循环和words.entries()迭代words数组。words.entries()返回一个迭代器,它的每个元素都是一个包含数组索引和值的数组(在这里是单词)

3.2题目分析

要建立pattern中单词和s中字符串的一一对应关系;
  • 使用的数据对象是Map()对象,利用has(key) set(key,value) get(key)三个关键函数处理 判断逻辑;
  • 对s字符串的处理:使用split()函数将s字符串转变为字符串数组,为之后的逻辑运算提供更好的数据结构类型;

勉励自己:贵在坚持!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值