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

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

前言

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

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

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

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

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

总结

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

目录
相关文章
|
人工智能 算法 BI
【AcWing算法基础课】第四章 数学知识(未完待续)(2)
从2到n枚举每个数,删掉其所有的倍数,枚举完之后,没有被删掉的数为质数。
116 0
|
存储 人工智能 算法
【AcWing算法基础课】第四章 数学知识(未完待续)(3)
根据下面公式来预处理出等式右边的组合数的值,那么等式左边就可以用等式右边已经算过的值来进行计算(有点像dp)。
82 0
|
算法
【AcWing算法基础课】第五章 动态规划(未完待续)(3)
当然,一个人能够滑动到某相邻区域的前提是该区域的高度低于自己目前所在区域的高度。
114 0
|
7月前
|
算法 Java
刷题专栏(二十五):有效的完全平方数
刷题专栏(二十五):有效的完全平方数
194 2
|
算法
【AcWing算法基础课】第五章 动态规划(未完待续)(1)
求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且 总价值最大 。
67 0
【AcWing算法基础课】第五章 动态规划(未完待续)(1)
2022 数据结构与算法《王道》学习笔记 (十一)KMP算法 详细归纳总结 改进的模式匹配算法
2022 数据结构与算法《王道》学习笔记 (十一)KMP算法 详细归纳总结 改进的模式匹配算法
2022 数据结构与算法《王道》学习笔记 (十一)KMP算法 详细归纳总结 改进的模式匹配算法
|
人工智能 算法 JavaScript
【AcWing算法基础课】第五章 动态规划(未完待续)(2)
给定一个如下图所示的数字三角形,从 顶部 出发,在每一结点可以选择移动至其左下方的结点或移动至其右下方的结点, 一直走到底层 ,要求找出一条路径,使 路径上的数字的和最大。
69 0
|
人工智能 算法
【AcWing算法基础课】第四章 数学知识(未完待续)(1)
利用秦九韶算法来实现其他进制转十进制的结果求解
84 0
|
存储 搜索推荐 Go
【刷题日记】692. 前K个高频单词
本次刷题日记的第 59 篇,力扣题为:692. 前K个高频单词,中等
C语言知识-学习练习题系列-10-4题型
C语言知识-学习练习题系列-10-4题型