zoukankan      html  css  js  c++  java
  • 20201216 单词规律

    给定一种规律 pattern 和一个字符串 str ,判断 str 是否遵循相同的规律。

    这里的 遵循 指完全匹配,例如, pattern 里的每个字母和字符串 str 中的每个非空单词之间存在着双向连接的对应规律

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/word-pattern
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    示例1:

    输入: pattern = "abba", str = "dog cat cat dog"
    输出: true
    示例 2:

    输入:pattern = "abba", str = "dog cat cat fish"
    输出: false
    示例 3:

    输入: pattern = "aaaa", str = "dog cat cat dog"
    输出: false
    示例 4:

    输入: pattern = "abba", str = "dog dog dog dog"
    输出: false

    class Solution {
        public boolean wordPattern(String pattern, String s) {
            
        }
    }
     
     
    思路:把字符串切割后存入map 出现kv值不匹配return false
      public boolean wordPattern(String pattern, String s) {
            String[] sp=pattern.split("");
            String[] ss=s.split(" ");
    
            if(sp.length!=ss.length){
                return false;
            }
            Map map = new HashMap();
            for (int i=0;i<sp.length;i++){
                if(map.containsKey(sp[i])&& !map.get(sp[i]).equals(ss[i])){
                    return false;
                }
                if(map.containsValue(ss[i])&&
                        !map.get(sp[i]).equals(ss[i])){//这行报错
                    return false;
                }
                map.put(sp[i],ss[i]);
            }
            return true;
        }

    发现输入"abba" "dog dog dog dog"时报错空指针异常

    原来是map.get时map中没有key 将equals左右参数交换下就成功了

     public boolean wordPattern(String pattern, String s) {
            String[] sp=pattern.split("");
            String[] ss=s.split(" ");
    
            if(sp.length!=ss.length){
                return false;
            }
            Map map = new HashMap();
            for (int i=0;i<sp.length;i++){
                if(map.containsKey(sp[i])&& !map.get(sp[i]).equals(ss[i])){
                    return false;
                }
                if(map.containsValue(ss[i])&&
                        !ss[i].equals(map.get(sp[i]))){
                    return false;
                }
                map.put(sp[i],ss[i]);
            }
            return true;
        }
     
     
  • 相关阅读:
    线程之Thread
    如何通过HTTP优雅调用第三方-Feign
    Spring AOP核心源码
    Spring-beans之BeanFactory初始化
    spring-core源码走读
    power of two
    排序算法(二)两种选择排序
    排序算法(一)四种冒泡排序
    约瑟夫问题
    我理解的CLH
  • 原文地址:https://www.cnblogs.com/hbhb/p/14144817.html
Copyright © 2011-2022 走看看