栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

力扣290. 单词规律

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

力扣290. 单词规律

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

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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/word-pattern

public boolean wordPattern(String pattern, String s) {

        HashMap  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;
    }

本题需要满足的是一种确定的映射关系,不可以出现一对多的映射,因此hashmap可以很好的验证这个问题,使用s.split(" "),使得对字符串的处理变得简单,然后遍历key值pattern,每次判断其value是否符合第一次存入时的value,当然,如果未存入则新存入。

要注意,string比较不可用==,原因懂得都懂,这是个坑,而字符比较必须用==,另外,注意i的管理,一次判断过后,需要使i的指针后移,也就是说,无论里面是否已经包含key,只要不return false ,都需要指针后移,忽略这个会导致很头痛。。。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/658769.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号