1. 程式人生 > 其它 >Leetcode: NO.290 單詞規律

Leetcode: NO.290 單詞規律

技術標籤:演算法

題目

給定一種規律 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 包含了由單個空格分隔的小寫字母。

連結:https://leetcode-cn.com/problems/word-pattern

解題記錄

  • 通過對映處理,pattern中的每一個字元對應一種字串,如果有一對多的情況的話那麼直接為false
  • 有一種情況就是pattern中的多個字元對應同一種字元,這樣需要在記錄的時候檢查是否為重複即可
/**
 * @author: ffzs
 * @Date: 2020/12/16 上午7:58
 */
public class Solution {
    public boolean wordPattern(String pattern, String s) {
        String[] strs = s.split(" ");
        if (strs.length != pattern.length()) return false;
        String[
] tmp = new String[26]; for (int i = 0; i < pattern.length(); i++) { int idx = pattern.charAt(i)-'a'; if (tmp[idx]==null) { for (String str : tmp) { if (str!=null && str.equals(strs[i])) return false; } tmp[idx] = strs[i]; } else { if (!strs[i].equals(tmp[idx])) return false; } } return true; } }

image-20201216081258776