C++to_string()方法不适用于char类型

想当然了,结果一直为0还不明所以找了半天错误。
to_string()方法会返回char的ASCII码值。因为人家函数参数根本就没有char.只能int float之类的数值。所以后来改用了截取子字符串函数substr(start,length)。这里也有坑,注意substr()和substring()的区别。前者第二个参数是截取的长度,后者是截取的截至(start,end)且不包括end.
3.14更正一下,C++没有substring方法,和Java搞混了
以下是Leetcode罗马数字转整数答案。第二遍做果然有提升,第一遍时还不会用map,一大堆if用的脑壳疼。

class Solution {
public:
    int romanToInt(string s) {
       map<string,int> m;
      int n=s.size();
        m["I"]=1;
        m["IV"]=4;
        m["V"]=5;
        m["IX"]=9;
        m["X"]=10;
        m["XL"]=40;
        m["L"]=50;
        m["XC"]=90;
        m["C"]=100;
        m["CD"]=400;
        m["D"]=500;
        m["CM"]=900;
        m["M"]=1000;
        int sum=0,i;
        for( i=0;i<n-1;i++)
        {
            string temp=s.substr(i,2);
            if(m[temp]>0)
            {
                sum+=m[temp];
                i++;
                continue;
            }
            sum+=m[s.substr(i,1)];
        }
        if(i!=n)
        sum+=m[s.substr(i,1)];
        return sum;
    }
};
发布了26 篇原创文章 · 获赞 6 · 访问量 6474

猜你喜欢

转载自blog.csdn.net/weixin_43975128/article/details/86921208