Как перебрать строку в цикле foreach?
Столкнулся с такой проблемой:
private static readonly Dictionary<string, int> RomNumber =
new Dictionary<string, int> {
{ "I", 1 },
{ "IV", 4 },
{ "V", 5 },
{ "IX", 9 },
{ "X", 10 },
{ "XL", 40},
{ "L", 50 },
{ "XC", 90 },
{ "C", 100 },
{ "CD", 400 },
{ "D", 500 },
{ "CM",900 },
{ "M", 1000 }
};
public static int Decode(string s)
{
int total = 0;
int prev = 0;
foreach (string c in s)
{
int curr = RomNumber[c];
total += curr < prev ? -curr : curr;
prev = curr;
}
return total;
}
}
В цикле foreach пишет что тип char невозможно преобразовать в string. И не пойму, вроде char не юзаю. И как можно решить данную проблему?
Ответы (1 шт):
Автор решения: aepot
→ Ссылка
Это не работает
foreach (string c in s)
Потому что элемент строки как массива - символ char, а не строка.
Попробуйте так
foreach (char c in s)
{
int curr = RomNumber[c.ToString()];
total += curr < prev ? -curr : curr;
prev = curr;
}
А вообще задача типовая, вот я нагуглил пример за пару минут.