【算法训练营】字符串转成整数

字符串转成整数

  • 题目
  • 题解
  • 代码

题目

【算法训练营】字符串转成整数_第1张图片
点击跳转: 把字符串转换为整数

题解

【题目解析】:
本题本质是模拟实现实现C库函数atoi,不过参数给的string对象
【解题思路】:

解题思路非常简单,就是上次计算的结果10,相当于10进制进位,然后加当前位的值。
例如:“123”转换的结果是
sum=0
sum
10+1->1
sum10+2->12
sum
10+3->123
本题的关键是要处理几个关键边界条件:

  1. 空字符串
  2. 正负号处理
  3. 数字串中存在非法字符

代码

class Solution {
public:
    int StrToInt(string str) {
        if(str.empty())
            return 0;
        //处理负号
        int flag=1;
        if(str[0]=='-')
        {
            flag=-1;
            str[0]='0';
        }
        else if(str[0]=='+')
        {
         flag=1;
         str[0]='0';
        }
        //遍历str 计算数
        int sum=0;
        for(int i=0;i<str.size();i++)
        {
            if(str[i]<'0'||str[i]>'9')
            {
                sum=0; //要处理中间状态的数组
                //当123a34 碰到a时 也要把sum的值置0 返回
                break;
            }
            sum=sum*10+str[i]-'0';
        }
        return flag*sum;
    }
};

你可能感兴趣的:(算法题解,算法,c++)