Word Pattern

来源:互联网 发布:亦何为而非天下之公乎 编辑:程序博客网 时间:2024/06/18 05:24

这道题,必须得建立pattern和字符串间的一一对映关系,否则,pattern失效。这是第一次自己犯得错误。

第二次,自己用到了map的containValue方法,这个本身是好的,但需要在面试时讨论是否可行,如果不接受,还是定义一个set来确保一一对映。

public class Solution {    public boolean wordPattern(String pattern, String str) {        if (pattern == null || str == null) {            return false;        }        String[] strArray = str.split(" ");        if (pattern.length() != strArray.length) {            return false;        }        Map<String, Character> map = new HashMap<>();        Set<Character> set = new HashSet<>();        for (int i = 0; i < strArray.length; i++) {            if (!map.containsKey(strArray[i])) {                if (!set.contains(pattern.charAt(i))) {                    map.put(strArray[i], pattern.charAt(i));                     set.add(pattern.charAt(i));                } else                     return false;            } else {                char patternChar = map.get(strArray[i]);                if (patternChar != pattern.charAt(i)) {                    return false;                }            }        }                // right, but not good         // Map<String, Character> map = new HashMap<>();        // for (int i = 0; i < strArray.length; i++) {        //     if (!map.containsKey(strArray[i])) {        //         if (!map.containsValue(pattern.charAt(i)))        //             map.put(strArray[i], pattern.charAt(i));        //         else         //             return false;        //     } else {        //         char patternChar = map.get(strArray[i]);        //         if (patternChar != pattern.charAt(i)) {        //             return false;        //         }        //     }        // }                // wrong        // Map<Character, String> map = new HashMap<>();        // for (int i = 0; i < strArray.length; i++) {        //     if (!map.containsKey(pattern.charAt(i))) {        //         map.put(pattern.charAt(i), strArray[i]);        //     } else {        //         String patternStr = map.get(pattern.charAt(i));        //         if (!strArray[i].equals(patternStr)) {        //             return false;        //         }        //     }        // }        return true;    }}



0 0
原创粉丝点击