题目:
给定一种规律 pattern 和一个字符串 s ,判断 s 是否遵循相同的规律。
这里的 遵循 指完全匹配,例如, pattern 里的每个字母和字符串 s ****中的每个非空单词之间存在着双向连接的对应规律。
算法:
边界条件也太多了
func wordPattern(pattern string, s string) bool {
strByteMap := make(map[string]byte)
byteStrMap := make(map[byte]string)
start, end := 0, 0
index := 0
str := ""
byt := byte(0)
for i := 0; i < len(s); i++ {
if s[i] != byte(' ') {
end++
if i != len(s)-1 {
continue
}
}
str = string(s[start:end])
if index >= len(pattern) {
return false
} else {
byt = pattern[index]
}
if _, ok := strByteMap[str]; !ok {
strByteMap[str] = byt
}
if _, ok := byteStrMap[byt]; !ok {
byteStrMap[byt] = str
}
if strByteMap[str] != byt || byteStrMap[byt] != str {
return false
}
start = i + 1
end = start
index++
}
return index == len(pattern)
}