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;
        }
    }

  • 相关阅读:
    基于.net mvc 的供应链管理系统(YB-SCM)开发随笔1-开篇
    基于.net mvc 的供应链管理系统(YB-SCM)开发随笔
    asp.net http to https
    html嵌入音频
    语义化练习分区域
    html文档引用css使用外部样式表
    字体样式 圆角边框
    HTML-标签
    前端基础—客户端
    html初识form表单
  • 原文地址:https://www.cnblogs.com/weizhibin1996/p/9683943.html
Copyright © 2011-2022 走看看