LeetCode:8. String to Integer (atoi)

题目链接:https://leetcode.com/problems/string-to-integer-atoi/#/description

原意就是把string型转化成int型,题目不难,但是其中有很多种情况,我最后直接用stoi转化了全是数字的string,比如说遇到字母,符号,空格,溢出的处理办法,经过很多次的测试,终于accept了。

代码如下:

class Solution {
public:
    int myAtoi(string str) {
        vector<char> vec;

        if(str.empty()) return 0;
        for(int i=0; i<str.length(); i++){
           if( str[i]>='0' && str[i]<='9'){
               vec.push_back(str[i]);
           }else{
               if(str[i]==32 && vec.size()==0)continue;
               if(str[i]=='-' || str[i]=='+'){
                   if(vec.size()==0) vec.push_back(str[i]);
                   else break;
               }
               else break;
           }

        }//for
      //  for(int i =0; i<vec.size(); i++)
      //     cout<<vec[i];
     // cout<<INT_MAX<<endl<<INT_MIN;
         if(vec.empty()) return 0;
        string ret;
        int result;
        if(vec[0]=='+') {
             cout<<1;
            if(vec.size()==1) return 0;
        for(int i =1; i<vec.size(); i++)
            ret += vec[i];  

            try{result =  stoi(ret);}catch(...){
               return INT_MAX;
            } 
            return result;
        }else if(vec[0]=='-'){
             cout<<2;
            if(vec.size()==1) return 0;
            for(int i =1; i<vec.size(); i++)
            ret += vec[i];  
            try{result =  stoi(ret);}catch(...){
              return INT_MIN;
            }
            return -result;
        }else{
             cout<<3;
            for(int i =0; i<vec.size(); i++)
            ret += vec[i];  
           try{result =  stoi(ret);}catch(...){
           // if(result>INT_MAX)
              return INT_MAX;
          //  else if(result<INT_MIN) return INT_MIN;
            }
            return result;
        }
    }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值