日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

atoi

發布時間:2023/12/29 综合教程 26 生活家
生活随笔 收集整理的這篇文章主要介紹了 atoi 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

 在LintCode上刷題,刷到一道atoi,以為很簡單,輕松寫完后發現測試用例簡直喪心病狂。

也許是剛開始的思路就被局限了,于是硬著頭皮走上“添磚加瓦”的道路(其實就是加點if-else),最后成功AC,代碼如下:

   int atoi(string &str)
    {
        int len = str.size();
        int end = 0;
        long sum = 0;
        char dot_flag = 0;
        int dot_loc = 0;
        char minus_flag = 0;
        int error_char_cnt = 0;
        char MAX_flag = 0;
        for(int i=len-1; i>=0; --i)
        {
            if(str[i] == '.')
            {
                sum = 0;
                MAX_flag = 0;
                dot_flag = 1;
                dot_loc = i;
                continue;
            }
            else if(str[i] == '-') //-符號出現
            {
                minus_flag = 1;
                if(i!=0 && str[i-1]!=' ')
                    return 0;
                else
                    break;
            }
            else if(str[i] == '+') //+符號出現
            {
                if(minus_flag)
                    return 0;
                error_char_cnt = len-i;
                if(i != 0 && str[i-1]!=' ')
                {
                    sum = 0;
                    MAX_flag = 0;
                }
                continue;
            }
            else if(str[i] == ' ')
            {
                error_char_cnt++;
                continue;
            }
            else if(str[i]<48 || str[i]>57)
            {
                error_char_cnt = len-i;
                sum = 0;
                MAX_flag = 0;
                continue;
            }
            if(dot_flag == 0)
            {
                if(MAX_flag == 0)                
                    sum += (str[i]-'0')*pow(10,len-1-i-error_char_cnt);
                if(sum > INT_MAX && MAX_flag==0)
                {
                    sum = INT_MAX;
                    MAX_flag = 1;
                }
            }
            else
            {
                if(MAX_flag == 0)
                    sum += (str[i]-'0')*pow(10,dot_loc-1-i-error_char_cnt);
                if(sum > INT_MAX && MAX_flag==0)
                {
                    sum = INT_MAX;
                    MAX_flag = 1;
                }
            }
        }
        if(minus_flag == 1)
        {
            if(sum == INT_MAX)
                sum = INT_MIN;
            else
                sum *= (-1);
        }
        return sum;
    }

總結

以上是生活随笔為你收集整理的atoi的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。