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 目的ということかな
  • 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 なんだ・・・