LeetCodeを解いた動機
最近転職活動をしているのですが、面接のコーディング試験の出来が良くなくLeetCodeを解くように勧められました。
また個人の課題として開発進捗が遅いことがあって、LeetCodeの答えには擬似プログラミングがあるので合わせて練習したいなと思いました。
問題内容
こちら参照
https://leetcode.com/problems/roman-to-integer
自分で書いた擬似プログラミング
今回メモを消してしまったため、次回以降記載
自分で書いたコード
golang.go
func romanToInt(s string) int {
symbolArray := map[string]int{
"I": 1,
"V": 5,
"X": 10,
"L": 50,
"C": 100,
"D": 500,
"M": 1000,
}
var splitS = strings.Split(s, ",")
returnInt := 0
isSkip := false
for i, _ := range splitS {
if isSkip {
isSkip = false
continue
}
if symbolArray[i] > symbolArray[i+1] {
returnInt = returnInt + symbolArray[i+1] - symbolArray[i]
isSkip = true
} else {
returnInt = returnInt + symbolArray[i]
}
}
return returnInt
}
答え
大きく間違っている点に関しては、問題を参照していただきたいのですがrangeの中で文字を二つ使う場合はboolで定義しているisSkip
をtrueに変更して if で飛ばずようにしている。
⇨ここは isSkip
の代わりにi := 0
のint型を事前に定義して
// isSkip = true
i += 2
// isSkip = false
i += 1
の方が好ましいようです。
確かにfor文の中でif文を毎回通過させるのは処理が重くなりそう。
最後に
初めてやったが、普段やっているAPIの開発とは毛色が違って面白かった。
今後も続けていくとともに、qiitaの記事をわかりやすくできるよう工夫していきたい。