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 包含了由单个空格分隔的小写字母。

class Solution {
public static boolean wordPattern(String pattern, String str) {
if(pattern == null || str==null) return false;
String[] string = str.split(" ");
if(pattern.length() != string.length) return false;
HashMap<Character,String> map = new HashMap<>(); for(int i=0; i<pattern.length(); i++){
char tmp = pattern.charAt(i);
//key已经在
if(map.containsKey(tmp)){
//不对应就失败
if(!map.get(tmp).equals(string[i])) return false;
}
//key不存在
else{
//两个value的值一样 a-dog b-dog->false
if (map.containsValue(string[i])) return false;
else
//添加k-v值
map.put(tmp,string[i]);
}
}
return true;
}
}

Java实现 LeetCode 290 单词规律的更多相关文章

  1. LeetCode 290. 单词规律(Word Pattern) 41

    290. 单词规律 290. Word Pattern 题目描述 给定一种规律 pattern 和一个字符串 str,判断 str 是否遵循相同的规律. 这里的 遵循 指完全匹配,例如,pattern ...

  2. Java实现 LeetCode 139 单词拆分

    139. 单词拆分 给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词. 说明: 拆分时可以重复使用字典中的单词. 你可 ...

  3. Java实现 LeetCode 820 单词的压缩编码(暴力)

    820. 单词的压缩编码 给定一个单词列表,我们将这个列表编码成一个索引字符串 S 与一个索引列表 A. 例如,如果这个列表是 ["time", "me", & ...

  4. Java实现 LeetCode 648 单词替换(字典树)

    648. 单词替换 在英语中,我们有一个叫做 词根(root)的概念,它可以跟着其他一些词组成另一个较长的单词--我们称这个词为 继承词(successor).例如,词根an,跟随着单词 other( ...

  5. Java实现 LeetCode 820 单词的压缩编码(字典树)

    820. 单词的压缩编码 给定一个单词列表,我们将这个列表编码成一个索引字符串 S 与一个索引列表 A. 例如,如果这个列表是 ["time", "me", & ...

  6. Java实现 LeetCode 212 单词搜索 II(二)

    212. 单词搜索 II 给定一个二维网格 board 和一个字典中的单词列表 words,找出所有同时在二维网格和字典中出现的单词. 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中&quo ...

  7. Java实现 LeetCode 140 单词拆分 II(二)

    140. 单词拆分 II 给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,在字符串中增加空格来构建一个句子,使得句子中所有的单词都在词典中.返回所有这些可能的句子. 说明: 分 ...

  8. Java实现 LeetCode 127 单词接龙

    127. 单词接龙 给定两个单词(beginWord 和 endWord)和一个字典,找到从 beginWord 到 endWord 的最短转换序列的长度.转换需遵循如下规则: 每次转换只能改变一个字 ...

  9. Java实现 LeetCode 126 单词接龙 II

    126. 单词接龙 II 给定两个单词(beginWord 和 endWord)和一个字典 wordList,找出所有从 beginWord 到 endWord 的最短转换序列.转换需遵循如下规则: ...

随机推荐

  1. SQLserver分库分表

    https://blog.csdn.net/ExceptionalBoy/article/details/78851327

  2. EOS基础全家桶(十一)智能合约IDE-EOS_Studio

    简介 我们马上要进入智能合约的开发了,以太坊最初提供了智能合约的功能,并宣告区块链进入2.0时代,而EOS的智能合约更进一步,提供了更多的便利性和可能性.为了进一步了解智能合约,并进行开发,我们需要先 ...

  3. iOS中的系统目录(Documents、tmp、Library)、RunLoop的一些知识点

    学习内容 欢迎关注我的iOS学习总结--每天学一点iOS:https://github.com/practiceqian/one-day-one-iOS-summary 实现轮播图需要注意的地方 需要 ...

  4. 1、Fiddler基础

    1.抓取https请求 前言 fiddler是一个很好的抓包工具,默认是抓http请求的,对于pc上的https请求,会提示网页不安全,这时候需要在浏览器上安装证书. 一.网页不安全 1.用fiddl ...

  5. Jmeter自动发送邮件

    自动发送邮件: 1.自动发送邮件,需要三个jar,分别是:activation.jar,commons-email-1.2.jar,mail.jar,这三个文件放在ant的lib目录下 2.报错 Ex ...

  6. 计算机组成及系统结构-第九章 输入输出(I/O)设备

    输入输出(I/O)设备 一.外部设备概述 二.输入设备 1.键盘 2.光笔.图形板和画笔(或游动标)输入 3.鼠标.跟踪球和操作杆输入 4.触摸屏 5.图像输入设备 6.条形码 7.光学字符识别(OC ...

  7. react-grid-layout实现拖拽,网格布局

    借鉴地址:https://www.jianshu.com/p/b48858eee3a7 安装 react-grid-layout npm install react-grid-layout impor ...

  8. Copy与mutableCopy的个人理解

    Copy与mutableCopy的个人理解 1. 相同点 都是将原有对象进行深拷贝(狭义) 这里的狭义上的深拷贝指的是在不考虑编译器在编译时对不可变对象进行copy时采取的优化策略:即将不可变对象的地 ...

  9. Codeforces1141E(E题)Superhero Battle

    A superhero fights with a monster. The battle consists of rounds, each of which lasts exactly nn min ...

  10. day07:集合的使用0220

    list_1=set([4,5,6,7])list_2=set([4,8,9])list_3=set([4,5])list_4=set([6,7])a = (2,3)b = (2) #list_3是l ...