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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

剑指offer 算法 (综合)

發(fā)布時間:2025/10/17 编程问答 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 剑指offer 算法 (综合) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目描述

將一個字符串轉換成一個整數,要求不能使用字符串轉換整數的庫函數。

解析:現在才發(fā)現,原來字符串轉數字特蛋疼,很多細節(jié),以前從來就沒考慮過,魯棒性啊!!!?

?首先,得定義個標志位LegitimateInput,表示串str是否為合法輸入,初始化為1:合法輸入。開始判斷啦~~~若str空串,直接LegitimateInput置0,return 0退出;不是空串,那么,開始分析每個字符。定義標志minus表示是否為負數,初始化為-1。讀首個字符,若為‘+’或者‘-’,minus置位,1:正,0:負,下標位pos+1;之后,開始逐個讀字符計算數字,i從pos開始讀至串尾,一旦出現非‘0’~‘9’之間的字符,LegitimateInput置0,sum置0,并退出循環(huán)(可以直接return 0);否則繼續(xù)循環(huán),每次計算一遍,還有判斷數字是否上溢或下溢,并做處理。循環(huán)結束,若是正確合理輸入,給LegitimateInput置1,并且若minus為-1,sum結果記得取反哦

反正,一切細心細心再細心,要考慮全部情況

class Solution { public:int LegitimateInput = 1;//0:表示不合法輸入 1:表示合法輸入int StrToInt(string str) {if(str.size()==0){LegitimateInput=0;return 0;}int sum=0;int minus=-1;//負數標志 1為負數int pos=0;//下標if(str[0] == '-'){minus=1;pos++;} else if(str[0] == '+'){minus=0;pos++;}int i;for(i=pos;i<str.size();i++){if(str[i] >= '0' && str[i] <= '9')sum=sum*10+(str[i]-'0');else {sum=0;LegitimateInput=0;break;}if(minus==0 && sum > 2147483647){//上溢出sum=0;LegitimateInput=0;break;}if(minus==1 && sum < -2147483648){//下溢出sum=0;LegitimateInput=0;break;}}if(sum == 0 && minus != -1 && str.size() == 1){LegitimateInput=0;//正負號 直接結束}if(str[i]== '\0' && sum != 0){if(minus==1)sum=-sum;LegitimateInput=1;}return sum;} };

總結

以上是生活随笔為你收集整理的剑指offer 算法 (综合)的全部內容,希望文章能夠幫你解決所遇到的問題。

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