Leetcode Note: Go - Isomorphic Strings
Isomorphic Strings - LeetCode
https://leetcode.com/problems/isomorphic-strings/
- Go 言語で取り組んだメモ
所感
- isomorphic という概念が理解できない
回答
Golang easy way to solve - LeetCode Discuss
https://leetcode.com/problems/isomorphic-strings/discuss/318692/Golang-easy-way-to-solve
func isIsomorphic(s string, t string) bool {
sPattern, tPattern := map[uint8]int{}, map[uint8]int{}
for index := range s {
if sPattern[s[index]] != tPattern[t[index]] {
return false
} else {
sPattern[s[index]] = index + 1
tPattern[t[index]] = index + 1
}
}
return true
}
- uint8 と int の map を定義
- unsigned int 8 bit size
- 符号なし数値でサイズが 8 bit という話
- 具体的には 0 - 255 というレンジが扱える
- byte の別名でもある
- string のループで使うので rune 目的ということかな
- unsigned int 8 bit size
for index := range s
引数として与えられた s の文字数分ループif sPattern[s[index]] != tPattern[t[index]] {
- map の s と t の内容が不一致なら return false で終了
} else {
sPattern[s[index]] = index + 1
tPattern[t[index]] = index + 1
- s と t の内容が一致している場合、各 map に index + 1 を代入
- ループが回りきったら isomorphic と判定して return true
文字の順序を保ったままリプレース可能な文字列ということかな。これどこが Easy なんだ・・・