290. 单词规律
给定一种规律 pattern 和一个字符串 str ,判断 str 是否遵循相同的规律。
这里的 遵循 指完全匹配,例如, pattern 里的每个字母和字符串 str 中的每个非空单词之间存在着双向连接的对应规律。
示例1:
示例 2:
示例 3:
示例 4:
遍历,用map存储对应关系
func wordPattern(pattern string, s string) bool {
// map+遍历——只用一个map,无法判断a=b=dog的情况
m:=map[byte]string{}
m1:=map[string]byte{}
str := strings.Fields(s)
if len(str)!=len(pattern){
return false
}
for i:=0;i<len(pattern);i++{
if (m[pattern[i]]!=""&&m[pattern[i]]!=str[i])||(m1[str[i]]!=0&&m1[str[i]]!=pattern[i]){ //存在且不相等
return false
}else{
m[pattern[i]]=str[i]
m1[str[i]]=pattern[i]
}
}
return true
}