Word Pattern

1、题目

Given a pattern and a string str, find if str follows the same pattern.

Here follow means a full match, such that there is a bijection between a letter in pattern and a non-empty word in str.

Examples:
pattern = "abba", str = "dog cat cat dog" should return true.
pattern = "abba", str = "dog cat cat fish" should return false.
pattern = "aaaa", str = "dog cat cat dog" should return false.
pattern = "abba", str = "dog dog dog dog" should return false.

2、求解

 String[] words = str.split(" ");
        if (words.length != pattern.length())
            return false;
        Map index = new HashMap();
        for (Integer i=0; i<words.length; ++i) {
            //如果put的key不存在,则返回null
            //如果存在就返回之前的oldvalue
            Object put = index.put(pattern.charAt(i), i);
            Object put1 = index.put(words[i], i);
            if (put != put1)
            return false;
        }
        return true;

重点解析:利用map.input(key,value)方法进行pattern到str的映射,同时利用map.input()方法的特点如何put的key不存在,就添加到map中,并且会返回null;否则更新value值,然后返回oldvalue的值。

而这里的pattern和str的返回值应该是同步的






posted @ 2018-05-11 14:56  crr121  阅读(135)  评论(0编辑  收藏  举报