c++ - 当我将输入 III 作为字符串输入时,罗马到整数问题它给出 333 作为答案而不是 3 有人可以更正我的代码
问题描述
如果你得到我犯错误的位置,请纠正我的 if-else 语句。请忽略这个问题的时空复杂性。忽略我检查过的条件是正确的。我应用了正确的条件,我正在考虑使用 switch语句而不是 if-else。告诉我错误,以便我可以在我的 if 语句中更正它们。
class Solution {
public:
int romanToInt(string s) {
int sum = 0;
int g = s.length();
for(int start=0;start<g;start++){
int k = (start-1);
if(s[start]== 'V' || s[start]== 'X' && k>=0){
if(s[k]=='I'){
if(s[start]=='V'){
sum=sum+4;
}
if(s[start]=='X'){
sum=sum+9;
}
}
else{
if(s[start]== 'V'){
sum=sum+5;
}
if(s[start]=='X'){
sum=sum+10;
}
}
}
if(s[start]=='L' || s[start]=='C'&& k>=0 ){
if(s[k]=='X'){
if(s[start]=='L'){
sum = sum+40;
}
if(s[start]=='C'){
sum = sum+90;
}
}
else{
if(s[start]=='L'){
sum = sum+50;
}
if(s[start]=='C'){
sum = sum+100;
}
}
}
if(s[start]=='D' || s[start]=='M' && k>=0){
if(s[k]=='C'){
if(s[start]=='D'){
sum = sum+400;
}
if(s[start]=='M'){
sum = sum+900;
}
}
else{
if(s[start]=='D'){
sum = sum+500;
}
if(s[start]=='M'){
sum = sum+1000;
}
}
}
if(s[start]=='I' && s[start+1] !='V' || s[start+1] !='X'){
sum = sum+1;
}
if(s[start]=='X' && s[start+1] !='L' || s[start+1] !='C'){
sum = sum+10;
}
if(s[start]=='C' && s[start+1] !='D' || s[start+1] !='M'){
sum = sum+100;
}
}
return sum;
}
};
解决方案
推荐阅读
- c# - Linq 对对象的查询无法通过 Xunit 测试
- jquery - JQuery 选择器 - 如何检查特定路径是否存在?
- css - 使用类重置 CSS 计数器
- c# - C# WPF,如何检测 Datagrid 中的滚动条是否到达末尾?
- java - JPA - EntityListener - @PrePersist 和 @PreUpdate 工作成功,但 @PostPersist 和 @PostUpdate 不工作
- spring-boot - 无法使用spring cloud stream kafka发送自定义标头
- javascript - 如何在多个线程中使用 java 脚本/节点上传最大数据以测量可实现的吞吐量
- java - 从 Google 云端硬盘获取共享云端硬盘列表
- chrome-devtools-protocol - 赛普拉斯无法连接到 Chrome DevTools 协议:TCPConnectWrap.afterConnect 处的 ECONNREFUSED
- javascript - HTTP 请求未在 AWS Lambda 中获取数据