博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
290. Word Pattern
阅读量:7283 次
发布时间:2019-06-30

本文共 1446 字,大约阅读时间需要 4 分钟。

一、题目

  1、审题

  

  2、分析

    给出两个字符串,判断两个字符串的元素排列规则是不是一样。

 

二、解答

  1、思路

   方法一、

    采用 Map<Character, String>

    将 pattern 的字符作为 Key,str 切分成单词数组 arr,单词作为 Value。

    若 pattern中字符数与 str 单词数不相等,则返回 false;

    若相等,在依次在 Map 中进行判断。

public boolean wordPattern(String pattern, String str) {        String[] arr = str.split(" ");        if(arr.length != pattern.length())            return false;        HashMap
map = new HashMap<>(); for (int i = 0; i < arr.length; i++) { char c = pattern.charAt(i); if(map.containsKey(c)) { if(!map.get(c).equals(arr[i])) return false; } else { if(map.containsValue(arr[i])) return false; map.put(c, arr[i]); } } return true; }

 

  方法二、

    采用 Map<Object, Integer>

    若 pattern 与 str 排列规则一样,则下标一样时, pattern 中的字符作为 key 下标作为 value, 与 str 中单词作为 key 下标作为 value 放入 Map 时,结果应当是一样的。

    若结果不一致,说明排列规则不一样。

public boolean wordPattern2(String pattern, String str) {        String[] words = str.split(" ");        if(words.length != pattern.length())            return false;        HashMap
map = new HashMap<>(); for(Integer i = 0; i < words.length; i++) if(map.put(pattern.charAt(i), i) != map.put(words[i], i)) return false; return true; }

 

转载于:https://www.cnblogs.com/skillking/p/10014794.html

你可能感兴趣的文章
stm32 加入 USE_STDPERIPH_DRIVER、STM32F10X_HD的原因
查看>>
利用GDAL进行工具开源化改造
查看>>
第一个ASP.NET
查看>>
2.2. mysqldump - a database backup program
查看>>
01-老马jQuery教程-jQuery入口函数及选择器
查看>>
分割工具——按字段属性
查看>>
c++ 11 移动语义、std::move 左值、右值、将亡值、纯右值、右值引用
查看>>
第 2 章 Spring Boot
查看>>
搭建Java环境JDK,和运行环境JRE
查看>>
Thinking in Java 4 : 一切都是对象
查看>>
iOS - UICollectionViewController
查看>>
Facebook 宕机事故系服务器配置问题导致
查看>>
【RAC】11g R2 RAC新特性之Highly Available IP(HAIP)
查看>>
Mysql 5.7 Gtid内部学习(三) Gtid和Last_commt/sequnce_number的生成时机
查看>>
【MySQL】漫谈死锁
查看>>
wait for stopper event to be increased
查看>>
上海往事之找Free机会一周
查看>>
[20160302]关于FULL_HASH_VALUE.txt
查看>>
奇葩念头:微信能取代WP应用吗
查看>>
Cordova插件,自动根据包名替换R资源描述
查看>>