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

    此博客链接:https://www.cnblogs.com/ping2yingshi/p/14054909.html

    单词规律

    题目链接:https://leetcode-cn.com/problems/word-pattern/

    题目

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

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

    示例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
    说明:
    你可以假设 pattern 只包含小写字母, str 包含了由单个空格分隔的小写字母。    

    题解

    思路:定义一个map来存Pattern中的每个字母,和相同字母的下标。判断给的字符串中在同一个字母中的下标位置中单词否相等。

    方法:

            1.定义一个map,key为String类型,value为ArraryList类型。

            2.map的Key存储pattern中的字母,value中存储相同字母的下标。

            3.把字符串s以空格分开以数组存储分开的单词。

            4.判断map中每个key值对应的value中的ArraryList中的Index在单词数组中是否全部相等 。

    代码

    class Solution {
        public boolean wordPattern(String pattern, String s) {
            Map <String,ArrayList> map=new HashMap();
            for(int i=0;i<pattern.length();i++)
            {
                ArrayList list=new ArrayList();
                String ch = pattern.charAt(i) + "";
                if(map.get(ch)==null)
                {
                    list.add(i);
                    map.put(ch,list); 
                    
                    // map.put(ch,list.push(i));
                }
                else{
                    map.get(ch).add(i);
                    ///map.put(ch,list.push(i));
                }
               
            }
            String str []=s.split(" ");
            // map.keyset
            // for(int i=0;i<map.size(),i++){
            //     int k=map.get(map.keyset(i)).size();
    
                 
            // }
            for(String tem:map.keySet())
            {
                   int k=map.get(tem).size();
                   ArrayList list = map.get(tem);
                //    for(Integet index:list){
    
                //    }
                   for(int i=0;i<k-1;i++)
                   {
                       
                           if(str[Integer.parseInt(list.get(i))]!=str[Integer.parseInt(list.get(i+1))])
                           {
                               return false;
                           }
                       
                   }
            }
            return true;
    
        }
    }

    问题

    显示不能把对象转换成字符串。

    出来混总是要还的
  • 相关阅读:
    oracle 存储过程深入学习与应用
    程序猿-技术成长-理论方法-实践指导
    PowerDesigner 概念数据模型(CDM)
    关于oracle监听程序的相关问题及解决方法
    代码调试的专业姿势
    新年学习目标,了解所有框架,熟悉部分常用框架,熟练使用其中三个
    ResultSet 处理方法
    JPA 相关API (一)
    从输入 URL 到页面加载完的过程中都发生了什么事情?
    R语言中的if-else语句写法
  • 原文地址:https://www.cnblogs.com/ping2yingshi/p/14054909.html
Copyright © 2011-2022 走看看