解决LeetCode #13罗马到整数的问题(Char比较)



问题在这里链接:https://leetcode.com/problems/roman-to-integer/

我一直有比较问题。charat()和罗马字符。我是JAVA的新手。如果(s.c arat (i) == ' i ')不应该工作吗?我看到了这个问题的其他解决方案,但解决方案倾向于创建一个char并将字符串的char放入该char中。你能解释为什么我的比较是不工作吗?我真的很感谢你的提前回答。

类解决方案{

public int romanToInt(String s) {
int i = 0;
int sum = 0;

for(i=0;i<s.length();i++)
{
if(s.charAt(i) == 'I')
{
if(s.charAt(i+1) == 'X') //4
{
i++;
sum += 4;
}
else if(s.charAt(i+1) == 'V') //9
{
i++;
sum += 9;
}
else
{
sum += 1;
}

}
else if(s.charAt(i) == 'V')
{
sum += 10;
}
else if(s.charAt(i) == 'X')
{
if(s.charAt(i+1) == 'L') //40
{
i++;
sum += 40;
}
else if(s.charAt(i+1) == 'C') //90
{
i++;
sum += 90;
}
else
{
sum += 10;
}
}
else if(s.charAt(i) == 'L')
{
sum += 50;
}
else if(s.charAt(i) == 'C')
{
if(s.charAt(i+1) == 'D') //400
{
i++;
sum += 400;
}
else if(s.charAt(i+1) == 'M') //900
{
i++;
sum += 900;
}
else
{
sum+=100;
}
}
else if(s.charAt(i) == 'D')
{
sum += 500;
}
else if(s.charAt(i) == 'M')
{
sum += 1000;
}

}
return sum;
}

}

我使用Java:

public int romanToInt(String s) {

HashMap<Character, Integer> dict = new HashMap<Character, Integer>();
{
dict.put('I', 1);
dict.put('V', 5);
dict.put('X', 10);
dict.put('L', 50);
dict.put('C', 100);
dict.put('D', 500);
dict.put('M', 1000);
}        
int temp = 0;
for(int i=0; i<s.length(); i++){
char c= s.charAt(i);
temp += dict.get(c);
char d= '.';
if((i+1)<s.length() && d!=c){
d = s.charAt(i+1);

if((c=='I' && (d=='V' || d=='X')) ||
(c=='X' && (d=='L' || d=='C')) || 
(c=='C' && (d=='D' || d=='M')))
{
temp += dict.get(d)-2*dict.get(c);
i++;
}
}  
}
return temp;
}

相关内容

  • 没有找到相关文章

最新更新