文档章节

Word Pattern(leetcode290)

woshixin
 woshixin
发布于 2018/12/14 13:06
字数 289
阅读 4
收藏 0

Given a pattern and a string str, find if str follows the same pattern.

Here follow means a full match, such that there is a bijection between a letter in pattern and a non-empty word in str.

Example 1:

Input: pattern = "abba", str = "dog cat cat dog"
Output: true

Example 2:

Input:pattern = "abba", str = "dog cat cat fish"
Output: false

Example 3:

Input: pattern = "aaaa", str = "dog cat cat dog"
Output: false

Example 4:

Input: pattern = "abba", str = "dog dog dog dog"
Output: false

Notes:
You may assume pattern contains only lowercase letters, and str contains lowercase letters separated by a single space.

//对于匹配的问题 感觉一般用map都是可以的
public static boolean wordPattern(String pattern, String str) {
    boolean result = true;
    Map<Character, String> map = new HashMap<>();
    String arrays[] = str.split(" ");
    if(arrays.length != pattern.length()){
        return false;
    }
    for (int i = 0; i < pattern.length(); i++) {
        if (map.containsKey(pattern.charAt(i))) {
            String value = map.get(pattern.charAt(i));
            if (!value.equals(arrays[i])) {
                result = false;
                break;
            }
        } else {
            if(map.containsValue(arrays[i])) {
                return false;
            }
            map.put(pattern.charAt(i), arrays[i]);

        }

    }

    return result;
}

 

//化简一下 直接通过put操作判断 简化了contains操作
public static boolean wordPattern2(String pattern, String str) {
    String[] words = str.split(" ");
    if (words.length != pattern.length()) {
        return false;
    }
    Map index = new HashMap();
    for (Integer i=0; i<words.length; ++i) {
        if (index.put(pattern.charAt(i), i) != index.put(words[i], i)) {
            return false;
        }
    }
    return true;
}

git:https://github.com/woshiyexinjie/leetcode-xin

© 著作权归作者所有

共有 人打赏支持
woshixin
粉丝 26
博文 311
码字总数 250116
作品 0
杭州
程序员
私信 提问
Linux自学笔记——Bash脚本之数组以及内置字符串处理

数组: 程序=指令+数据 指令:command 数据:变量、文件 变量:存储单个元素的内存空间; 数组:存储多个元素的连续的内存空间; 数组名:整个数组只有一个名字; 数组索引:编号从0开始; ...

claude_liu
2017/09/29
0
0
leetcode题解(查找表问题)

查找,是使用计算机处理问题时的一个最基本的任务,因此也是面试中非常常见的一类问题。很多算法问题的本质,就是要能够高效查找。学会使用系统库中的map和set,就已经成功了一半。 set的使用...

吴小琪
2018/06/21
0
0
shell编程(二)

博主名: 李常明 博文地址: http://keep88.blog.51cto.com 此笔记出自老男孩书籍: 跟老男孩学linux运维 shell编程实战 shell变量知识进阶与实践 1、shell中的特殊位置参数变量: 例如: 1)...

咖啡猫Mr
2017/05/31
0
0
Bash编程之数组和字符串处理

Bash编程之数组和字符串处理 目录 笔记日期20180405 数组 声名(创建)数组declare -a ARRAY_NAME 数组元素的赋值ARRAY_NAME=("VAL1" "VAL2" "VAL3"...) 引用数组元素:${ARRAY_NAME[INDEX]} ......

Winthcloud
2018/06/29
0
0
890. Find and Replace Pattern - LeetCode

Question 890. Find and Replace Pattern Solution 题目大意:从字符串数组中找到类型匹配的如xyy,xxx 思路: Java实现:

yysue
2018/08/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周日乱弹 —— 没时间 没头发 但有钱

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @开源中国总经办主任 :分享齐一的单曲《这个年纪》 《这个年纪》- 齐一 手机党少年们想听歌,请使劲儿戳(这里) @肿肿卷 :我真的可以睡一天...

小小编辑
8分钟前
0
0
Django进阶 1.1 ORM基础—ORM 1.2.1 增删改查之查询 1.2.2 删改增 (1) 1.2.3 删改增 (2)

ORM基础 ORM是Django操作数据库的API,Django的作者将sql语句封装在里面供我们使用。 我们前面还提到过Django提供一个模拟数据库的工具,sqlite,供我们学习测试使用。 如果我们想使用mysql...

隐匿的蚂蚁
今天
1
0
Windows 上安装 Scala

在安装 Scala 之前需要先安装 Java 环境,具体安装的详细方法就不在这里描述了。 您可以自行搜索我们网站中的内容获得其他网站的帮助来获得如何安装 Java 环境的方法。 接下来,我们可以从 ...

honeymose
今天
3
0
数据库篇多表操作

第1章 多表操作 实际开发中,一个项目通常需要很多张表才能完成。例如:一个商城项目就需要分类表(category)、商品表(products)、订单表(orders)等多张表。且这些表的数据之间存在一定的关系...

stars永恒
今天
3
0
nginx日志自动切割

1.日志配置(Nginx 日志) access.log----记录哪些用户,哪些页面以及用户浏览器,IP等访问信息;error.log------记录服务器错误的日志 #配置日志存储路径:location / {      a...

em_aaron
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部