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

    一、题目

      1、审题

      

      2、分析

        给出两个字符串,判断两个字符串的元素排列规则是不是一样。

    二、解答

      1、思路

       方法一、

        采用 Map<Character, String>

        将 pattern 的字符作为 Key,str 切分成单词数组 arr,单词作为 Value。

        若 pattern中字符数与 str 单词数不相等,则返回 false;

        若相等,在依次在 Map 中进行判断。

        public boolean wordPattern(String pattern, String str) {
            String[] arr = str.split(" ");
            if(arr.length != pattern.length())
                return false;
            HashMap<Character, String> map = new HashMap<>();
            for (int i = 0; i < arr.length; i++) {
                char c = pattern.charAt(i);
                if(map.containsKey(c)) {
                    if(!map.get(c).equals(arr[i]))
                        return false;
                }
                else {
                    if(map.containsValue(arr[i]))
                        return false;
                    map.put(c, arr[i]);
                }
            }
            return true;
        }
        

      方法二、

        采用 Map<Object, Integer>

        若 pattern 与 str 排列规则一样,则下标一样时, pattern 中的字符作为 key 下标作为 value, 与 str 中单词作为 key 下标作为 value 放入 Map 时,结果应当是一样的。

        若结果不一致,说明排列规则不一样。

        public boolean wordPattern2(String pattern, String str) {
            String[] words = str.split(" ");
            if(words.length != pattern.length())
                return false;
            HashMap<Object, Integer> map = new HashMap<>();
            for(Integer i = 0; i < words.length; i++)
                if(map.put(pattern.charAt(i), i) != map.put(words[i], i))
                    return false;
            return true;
        }
  • 相关阅读:
    【强转】QEMU+GDB调试linux内核全过程
    从上往下打印二叉树
    栈的压入、弹出序列
    包含main函数的栈
    顺时针打印矩阵
    Linux终端美化
    Linux 终端美化
    KDE桌面环境自带的Konsole终端配置
    KDE美化及常用设置
    KDE常用桌面插件总结
  • 原文地址:https://www.cnblogs.com/skillking/p/10014794.html
Copyright © 2011-2022 走看看