//我的小破碼
class Solution {
public:
int romanToInt(string s) {
int len=s.size();
int *a=new int[len];
int ans=0;
string rom="MDCLXVI";
int value[]={1000,500,100,50,10,5,1};
for (int i=0;i<s.size();i++){
for(int j=0;j<7;j++){
if (s.substr(i,1)==rom.substr(j,1))
{a[i]=value[j];
break;}
}
}
for(int i=0;i<s.size()-1;i++){
if (a[i]<a[i+1])
ans-=a[i];
else
ans+=a[i];
}
return ans+a[len-1];
}
};
很簡單的題要死要活。主要的思路還是看來的。可能因為不是很懂羅馬數字的規則?
還有字符串啊,指針之類的概念也不夠清楚。
map類型好像很好用!!好多題都可以用它!要學!!!
//討論區的別人家的碼
int romanToInt(string s)
{
unordered_map<char, int> T = { { 'I' , 1 },
{ 'V' , 5 },
{ 'X' , 10 },
{ 'L' , 50 },
{ 'C' , 100 },
{ 'D' , 500 },
{ 'M' , 1000 } };
int sum = T[s.back()];
for (int i = s.length() - 2; i >= 0; --i)
{
if (T[s[i]] < T[s[i + 1]])
{
sum -= T[s[i]];
}
else
{
sum += T[s[i]];
}
}
return sum;
}
···