Leetcode: NO.290 單詞規律
阿新 • • 發佈:2020-12-22
技術標籤:演算法
題目
給定一種規律 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;
}
}