40 lines
1.2 KiB
Java
40 lines
1.2 KiB
Java
|
|
package hash;
|
|||
|
|
|
|||
|
|
import java.util.HashMap;
|
|||
|
|
import java.util.HashSet;
|
|||
|
|
import java.util.Map;
|
|||
|
|
import java.util.Set;
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 题目: 290. 单词规律 (wordPattern)
|
|||
|
|
* 描述:给定一种规律 pattern 和一个字符串 s ,判断 s 是否遵循相同的规律。
|
|||
|
|
*
|
|||
|
|
* 这里的 遵循 指完全匹配,例如, pattern 里的每个字母和字符串 s 中的每个非空单词之间存在着双向连接的对应规律。
|
|||
|
|
*
|
|||
|
|
* 示例 1:
|
|||
|
|
输入: pattern = "abba", s = "dog cat cat dog"
|
|||
|
|
输出: true
|
|||
|
|
|
|||
|
|
* 链接:https://leetcode.cn/problems/word-pattern/
|
|||
|
|
*/
|
|||
|
|
public class WordPattern {
|
|||
|
|
public boolean wordPattern(String pattern, String s) {
|
|||
|
|
String[] res=s.split("\\s");
|
|||
|
|
if(res.length!=pattern.length())
|
|||
|
|
return false;
|
|||
|
|
Map<Character,String> map=new HashMap<>();
|
|||
|
|
Set<String>set=new HashSet<>();
|
|||
|
|
for (int i = 0; i < pattern.length(); i++) {
|
|||
|
|
char cur=pattern.charAt(i);
|
|||
|
|
if(map.containsKey(cur)) {
|
|||
|
|
if(!map.get(cur).equals(res[i])) return false;
|
|||
|
|
}else{
|
|||
|
|
if(set.contains(res[i]))return false;
|
|||
|
|
map.put(cur,res[i]);
|
|||
|
|
set.add(res[i]);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
}
|