解题思路:模拟
左边的罗马数字>右边的罗马数字,ans减去value的值;
左边的罗马数字<右边的罗马数字,ans加上value的值;
如:XIV=10-1+5=14
步骤:
1.声明字符串s的长度的变量n
2.遍历字符串s的每个字符,通过map函数找到该字符串对应的value值。
3.if,else语句。
如果同时满足第i个字符<n-1和value值<第i+1个字符的值,则ans减去value的值;
否则ans加上value的值
4.依次循环每个字符的值
package main
import "fmt"
func main(){
ans:=romanToInt("XIV")
fmt.Println(ans)
}//全局变量只能用var来声明,不能用:
//全局变量不能赋值,只能在函数内赋值
var m = map[byte]int {'I':1,'V':5,'X':10,'L':50,'C':100,'D':500,'M':1000}
func romanToInt(s string)(ans int){
n:=len(s)
for i:=range s{
value:=m[s[i]]
if i<n-1&&value<m[s[i+1]]{
ans-=value
}else{//else紧跟if语句后面,不能换行
ans+=value
}
}
return ans
}
时间复杂度O(n):即字符串的长度
空间复杂度O(1)