Java算法-力扣leetcode-290. 单词规律

290. 单词规律

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

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

示例1:

复制代码
输入: pattern = "abba", s = "dog cat cat dog"
输出: true

示例 2:

复制代码
输入: pattern = "abba", s = "dog cat cat fish"
输出: false

示例 3:

复制代码
输入: pattern = "aaaa", s = "dog cat cat dog"


输出: false

提示:

  • 1 <= pattern.length <= 300
  • pattern 只包含小写英文字母
  • 1 <= s.length <= 3000
  • s 只包含小写英文字母和 ' '
  • s 不包含 任何前导或尾随对空格
  • s 中每个单词都被 单个空格 分隔

复制代码
class Solution {
    public boolean wordPattern(String pattern, String s) {

        String[] sArray = s.split(" ");
        if(pattern.length()!=sArray.length){
            return false;
        }
        Map<Character, String> map = new HashMap<Character, String>();
        for (int i = 0; i < pattern.length(); i++) {
            char c1 = pattern.charAt(i);
            if (map.keySet().contains(c1)) {
                if (!sArray[i].equals(map.get(c1))) {
                    return false;
                }
            }else{
                if(map.values().contains(sArray[i])){
                    return false;
                }
                map.put(c1, sArray[i]);
            }
        }
        return true;
    }
}
相关推荐
渴望技术的猿8 分钟前
Windows 本地部署MinerU详细教程
java·windows·python·mineru
diving deep9 分钟前
XML简要介绍
xml·java·后端
Uranus^12 分钟前
深入解析Spring Boot与Redis集成:高效缓存实践
java·spring boot·redis·缓存
小吕学编程13 分钟前
Jackson使用详解
java·javascript·数据库·json
珊瑚里的鱼22 分钟前
【滑动窗口】LeetCode 1658题解 | 将 x 减到 0 的最小操作数
开发语言·c++·笔记·算法·leetcode·stl
落樱弥城25 分钟前
角点特征:从传统算法到深度学习算法演进
人工智能·深度学习·算法
总是难免31 分钟前
设计模式 - 单例模式 - Tips
java·单例模式·设计模式
晚秋大魔王35 分钟前
OpenHarmony 开源鸿蒙南向开发——linux下使用make交叉编译第三方库——wget
java·linux·运维·开发语言·华为·harmonyos
heath ceTide38 分钟前
轻量、优雅、高扩展的事件驱动框架——Hibiscus-Signal
java·开发语言
_extraordinary_39 分钟前
Java 常用的Arrays函数
java·开发语言