1
Help us understand the problem. What are the problem?

posted at

LeetCodeのRoman to Integer を解いてみた

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の記事をわかりやすくできるよう工夫していきたい。

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
1
Help us understand the problem. What are the problem?