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

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

前言

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

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

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

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

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

总结

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

目录
相关文章
|
4月前
|
算法 Java C++
字符串删减(蓝桥杯每日一题)
字符串删减(蓝桥杯每日一题)
36 0
|
5月前
|
算法
刷题专栏(三十):数组拆分 I
刷题专栏(三十):数组拆分 I
105 2
|
5月前
|
算法 Java
刷题专栏(二十五):有效的完全平方数
刷题专栏(二十五):有效的完全平方数
117 2
|
5月前
|
算法 Java
刷题专栏(二十九):重复的子字符串
刷题专栏(二十九):重复的子字符串
111 2
|
5月前
|
算法
刷题专栏(十五):各位相加
刷题专栏(十五):各位相加
33 0
|
5月前
|
算法
刷题专栏(十六):丑数
刷题专栏(十六):丑数
34 0
|
5月前
|
算法
刷题专栏(十七):丢失的数字
刷题专栏(十七):丢失的数字
36 0
|
9月前
|
算法 Java
LeetCode150道面试经典题--单词规律(简单)
给定一种规律 pattern 和一个字符串 s ,判断 s 是否遵循相同的规律。 这里的 遵循 指完全匹配,例如, pattern 里的每个字母和字符串 s 中的每个非空单词之间存在着双向连接的对应规律
48 0
|
10月前
|
存储 搜索推荐 Go
【刷题日记】692. 前K个高频单词
本次刷题日记的第 59 篇,力扣题为:692. 前K个高频单词,中等
|
10月前
|
存储 自然语言处理 索引
【刷题日记】 最常见的单词
本次刷题日记的第 36 篇,力扣题为:最常见的单词 ,简单