刷题专栏(二十):单词规律

149 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第20天,点击查看活动详情

前言

刷题专栏到目前已经是第二十篇了,欢迎大家来关注我的刷题专栏,一起来刷题。

今天的这道题《单词规律》,主要是一个逻辑问题。

要搞清这个逻辑问题,难点就是在于如何来提取规律,和判断单词如何匹配规律。

下面我们就一起来看一下具体的操作吧。

image.png

算法题:单词规律

根据题目的描述来看,是要通过一个规律来判断另外一个英文语句是否符合该规律。

那么如何通过程序来获取这个规律呢?

当然是每一个字母对应字母串中每一个单词。

只有一一对应的时候才会存在规律符合的特征。

所以在这里需要判断一下初始的规律字母数量是否和单词数量相同才行。

经过判断数量一致情况下的数据,可以接着通过循环单词数组,通过split方法来分隔单词字符串。

如果中途出现不符合规律的存在,就直接返回false即可。

下面我们就来看一下具体的代码实现吧。

代码展示

代码如下,大家可以自行尝试一下。

class Solution {
    public boolean wordPattern(String pattern, String s) {
        String[] words = s.split(" ");
        if (words.length != pattern.length()) {
            return false;
        }
        Map<Object, Integer> map = new HashMap<>();
        for (Integer i = 0; i < words.length; i++) {
            if (map.put(pattern.charAt(i), i) != map.put(words[i], i)) {
                return false;
            }
        }
        return true;
    }
}

代码执行结果

这道题官方题解很复杂,不过这个方式倒是很不错,通过单次循环就可以搞定。

而且本次的执行效果也非常不错。

image.png

总结

这次的这道题,主要就是逻辑题目,只要搞清如何判断规律和每一个单次的对应关系即可,大家是否学到了呢,评论区去见!