阅读 69
【算法练习18】290.单词规律——哈希表

【算法练习18】290.单词规律——哈希表

小知识,大挑战!本文正在参与「程序员必备小知识」创作活动

本文已参与「掘力星计划」,赢取创作大礼包,挑战创作激励金。

点赞再看,养成习惯。微信搜索【一条coding】关注这个在互联网摸爬滚打的程序员。

本文收录于github-技术专家修炼,里面有我的学习路线、系列文章、面试题库、自学资料、电子书等。


我看看是谁不理解题目意思的,哦,原来是我.jpg

——leetcode此题热评

前言

哈喽,大家好,我是一条。

糊涂算法,难得糊涂

《糊涂算法》专栏上线倒计时——7天

Question

290. 单词规律

难度:简单

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

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

示例1:

输入: pattern = "abba", str = "dog cat cat dog" 输出: true 示例 2:

输入:pattern = "abba", str = "dog cat cat fish" 输出: false 示例 3:

输入: pattern = "aaaa", str = "dog cat cat dog" 输出: false 示例 4:

输入: pattern = "abba", str = "dog dog dog dog" 输出: false 说明: 你可以假设 pattern 只包含小写字母, str 包含了由单个空格分隔的小写字母。

Solution

Code

所有leetcode代码已同步至github

欢迎star

/**
 * @author 一条coding
 */
class Solution {
    public boolean wordPattern(String pattern, String s) {

        HashMap <Character,String> mp = new HashMap<>();

        char[] pattern_chars=pattern.toCharArray();

        String[] ss = s.split(" ");  //按空格分割字符串
        
        if(pattern_chars.length!=ss.length)return false;//长度都不对应直接false

        int i=0;

        for(char a : pattern_chars){
            if(!mp.containsKey(a)){
                if(!mp.containsValue(ss[i])){  //对应value已存在但key值不同
                    mp.put(a,ss[i++]);
                }
                else return false;
            }
            else {//对应key值已存在但value不同,注意比较要用equals,用!=结果不对
                if(!Objects.equals(mp.get(a), ss[i++])) return false;
            }
        }
        return true;
    }
}
复制代码

Result

复杂度分析

  • 时间复杂度:O(N)

Last

独脚难行,孤掌难鸣,一个人的力量终究是有限的,一个人的旅途也注定是孤独的。当你定好计划,怀着满腔热血准备出发的时候,一定要找个伙伴,和唐僧西天取经一样,师徒四人团结一心才能通过九九八十一难。 所以,

如果你也想进大厂,

想学好数据结构和算法,

想坚持刷题,

想有一群志同道合的伙伴,

请加入组队刷题

文章分类
后端
文章标签