|
看到這道題,存在鍵值對,所以先建個泛型字典,把鍵值填進去。 由于這道題存在兩個字符表示一個數(shù)字的情況,所以在for循環(huán)的時候判斷一下,看看當(dāng)前字符串中循環(huán)到的字符是否和下一個字符能夠組成存在在字典里的鍵值對,如果能,把值加上,跳過下一個字符進入下下個字符循環(huán),如果不能正常匹配就行了 public class Solution {
public int RomanToInt(string s) {
Dictionary<string, int> map = new Dictionary<string, int>();
map.Add("I", 1);
map.Add("IV", 4);
map.Add("V", 5);
map.Add("IX", 9);
map.Add("X", 10);
map.Add("XL", 40);
map.Add("L", 50);
map.Add("XC", 90);
map.Add("C", 100);
map.Add("CD", 400);
map.Add("D", 500);
map.Add("CM", 900);
map.Add("M", 1000);
int num = 0;
for (int i = 0; i < s.Length; i++)
{
string a = "";
if ((i + 1) < s.Length)
{
a = s[i].ToString() + s[i + 1].ToString();
}
if (map.ContainsKey(a))
{
num += map[a];
i++;
}
else
{
num += map[s[i].ToString()];
}
}
return num;
}
}
|
|
|