290.单词规律

167 阅读1分钟

题目:
给定一种规律 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)
}