String - 290. Word Pattern

时间:2022-07-25
本文章向大家介绍String - 290. Word Pattern,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

290. Word Pattern

Given two strings s and _t _, write a function to determine if t is an anagram of s.

Example 1:

Input: s = "anagram", t = "nagaram" Output: true

Example 2:

Input: s = "rat", t = "car" Output: false

Note: You may assume the string contains only lowercase alphabets.

Follow up: What if the inputs contain unicode characters? How would you adapt your solution to such case?

思路:

题目的实质是两个数组相同元素的索引匹配,可以抽象为两个数组,分别记录某个元素在源字符串中的下标。这里用map来做,因为put的操作,如果空值就返回null,否则返回之前存储的value;

代码:

java:

class Solution {

    public boolean wordPattern(String pattern, String str) {
        if (pattern == null || str == null) return true;
        
        String[] strs = str.split(" ");
        if (strs.length != pattern.length()) return false;
        
        Map index = new HashMap();
        for (Integer i = 0; i < strs.length; i++) {
            if (index.put(pattern.charAt(i), i) != index.put(strs[i], i)) // return null or old value
                return false;
        }
        
        return true;
    }
}