將字串轉為數字。
符合以下幾種規則:
1.字串前方允許空白
2.字串後方若有字串,但前方為數字時,後方忽略不記。
3.到達非空白位置後若第一個字元非"+"、"-"、數字則回傳0
4.若超過32bit,則依照正負輸出INT_MIN或INT_MAX
按照各種可能,避免發生即可。
class Solution {
public:
    int myAtoi(string str) {
        bool flag = true;//true is positive
        bool enter=false;
        int ans=0;
        for(int i=0;i<str.length();i++)
        {
            if(enter&&str[i]<48||str[i]>57)
                break;
            if(str[i]=='-')
            {
                flag=false;
                if(str[i+1]<48||str[i+1]>57)
                    return 0;
            }
            else if(str[i]=='+')
            {
                flag=true;
                if(str[i+1]<48||str[i+1]>57)
                    return 0;
            }
            else if(str[i]==' ')
                continue;
            else if(str[i]<48||str[i]>57)
                return ans;
            else
            {
                enter=true;
                if(ans>214748364&&flag||(ans==214748364&&str[i]>'6'&&flag))
                    return 2147483647;
                else if(ans>214748364&&!flag||(ans==214748364&&str[i]>'7'&&!flag))
                    return -2147483648;
                else
                    ans=ans*10+(str[i]-48);
            }      
        }
        if(!flag)
            ans=-ans;
        return ans;
    }
};
大概就是不停測試的過程吧,有一些並未考慮到。
然後就是因為這個題目而認識了atoi()這個function
我以前居然不知道字串轉數字call function就好.....都是自己用來著
然後那個+-的沒有負負得正這麼回事,一次只能有一個+-號。