CodeKata#6の保存に使用
4319 ワード
質問する
アルファベットを数字1~3999の間のアルファベットsに変換してパラメータとして使用する場合は、該当する数字を返します.
ローマ数字を数字としてマークします.
SymbolValueI1V5X10L50C100D500M1000
ローマ字を数字で読む方法は、左からローマ字を順番に付けます.
III = 3
XII = 12
XXVII=27.
しかし表現4の場合はIIIではなくIV
後ろの数字から前の数字を引けばいいです
9はIXです.
VとXの前に来て、4、9
XはLとCの前40,90に来る
CはD,Mの前に来て,400,900
に答える def roman_to_num(s):
rom = {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000}
int = 0
for i in range(len(s)):
if i > 0 and rom[s[i]] > rom[s[i - 1]]:
int += rom[s[i]] - 2 * rom[s[i - 1]]
else:
int += rom[s[i]]
return int
def roman_to_num(s):
rom = {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000}
int = 0
for i in range(len(s)):
if i > 0 and rom[s[i]] > rom[s[i - 1]]:
int += rom[s[i]] - 2 * rom[s[i - 1]]
else:
int += rom[s[i]]
return int
まず私が解けなかったのは、他のブログの解答であることを示しています.
私の考えは、まずディクシャナに価格を置いて、for文を利用して近づくことですが、実現しませんでした.
上記のプールが論理的に現在の値より小さい場合は、現在の値から値を減算し、intに値を追加し続けます.そうでない場合は、リストの値をintに追加します.
論理はそうですが、実はまだ感じていないので、もっと練習しなければなりません.
Reference
この問題について(CodeKata#6の保存に使用), 我々は、より多くの情報をここで見つけました https://velog.io/@cj4207/CodeKata6-저장용テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol