プログラミングコンテストチャレンジブック(2-2)
Goにはwhileがないけどforで同じことができる。文字列はbyteの配列のように振る舞うので出力するときにstringで変換しないと数字が出力される。それから配列の参照時に、インクリメント、デクリメントステートメントは使えない、つまりS[a++]という書き方はできない。
package main import "fmt" const MAX_N int = 2000 func main() { N := 6 S := "ACDBCB" a := 0 b := N-1 for a <= b { left := false for i := 0; a+i < b; i++ { if S[a+i] < S[b-i] { left = true break } else if S[a+i] > S[b-i] { left = false break } } if left { fmt.Printf("%s",string(S[a])) a++ } else { fmt.Printf("%s",string(S[b])) b-- } } fmt.Printf("\n") }