zoukankan      html  css  js  c++  java
  • LeetCode290-单词模式

    一开始我以为,只要一个Hash表,键是abcd,值是单词

    1、如果key没有出现过,那就设置key - value

    2、如果key有了,那就看value是不是str里面那个单词。

    但是这样会有一个问题,value重复

    比如 abba  dog dog dog dog 是对的

    因为

    a->dog

    b->dog

    那么其实只要给key和vlaue各一个set,去重就行了。如果size相等,就是真

    这个神来之笔,我也不知道怎么想出来的。

    1、先key -》 value,单向正确。保证顺序是对的。

    2、单向正确之后,有多少个不重复的key,就应该有多少个不重复的value

    class Solution {
        public boolean wordPattern(String pattern, String str) {
            if (pattern==null||pattern.length()==0)
                return false;
            if (str==null||str.length()==0)
                return false;
    
    
            String [] array = str.split(" ");
    
            if(pattern.length()!=array.length)
                return false;
    
            Map<Character,String> map = new HashMap<>();
            //去重
            Set<Character> set1 = new HashSet<>();
            Set<String> set2 = new HashSet<>();
    
            for(int i=0;i<pattern.length();i++){
    
                String temp = map.get(pattern.charAt(i));
    
                if(temp==null){
                    map.put(pattern.charAt(i),array[i]);
                    set1.add(pattern.charAt(i));
                    set2.add(array[i]);
                }else {
                    //先保证两边是单向对应的
                    if(!temp.equals(array[i]))
                        return false;
                }
    
            }
    
            if(set1.size()==set2.size())
                return true;
            else
                return false;
        }
    }

  • 相关阅读:
    CAP理论中的P到底是个什么意思?
    网络分区是什么
    SQL中的where条件,在数据库中提取与应用浅析
    golang 数据库开发神器 sqlx使用指南
    2017-07-08( bzip2 bunzip mount)
    2017-07-07(zip unzip gzip gunzip)
    2017-07-06(grep man apropos )
    2017-07-05 (whereis which find)
    001
    009-变量测试
  • 原文地址:https://www.cnblogs.com/weizhibin1996/p/9683943.html
Copyright © 2011-2022 走看看