zoukankan      html  css  js  c++  java
  • Leetcode 290 Word Pattern

    lc290 Word Pattern

    有点类似lc205 同形字符串,思路也一样,就是比较相同字母映射的对象是否相同

    题目提醒了,这是双射,即一一对应,比较容易想到的是用两个hashmap,源字符串和目标字符串分别做key值

    不过可以参考lc205解法,只用一个hashmap,

    这里有个小trick,申请hashmap时,可以直接用Map map = new HashMap() 或者 HashMap<Object, Integer>这样map的key值就可以是multitype的(Character,String都行)

    而且由于hashmap的containsKey底层是由.equals()实现的,不同类型即使肉眼看值相等,containsKey()却检查不到。例如:char 'a'和String "a"是不同的,可以利用这一点,来用index来表示映射的字母

    下面给出只用一个hashmap的解法

     1 class Solution {
     2     public boolean wordPattern(String pattern, String str) {
     3         String[] t = str.split(" ");
     4 
     5         if(t.length != pattern.length())
     6             return false;
     7         
     8         HashMap<Object, Integer> map = new HashMap<>();
     9         
    10         for(Integer i=0; i<t.length; ++i){
    11             if(map.put(pattern.charAt(i), i) != map.put(t[i], i))
    12                 return false;
    13         }
    14         
    15         return true;
    16     }
    17 }
  • 相关阅读:
    PPT_标题
    产品需求撰写-架构图
    测试
    SparkLauncher 1.6 版本bug
    Github fork同步
    Maven 配置远程仓库
    Sqoop2中传入配置文件中url之【坑】
    Spark性能优化-coalesce(n)
    面试算法题目
    Git 基本概念及常用命令
  • 原文地址:https://www.cnblogs.com/hwd9654/p/10955827.html
Copyright © 2011-2022 走看看