【LeetCode 剑指offer刷题】字符串题6:67 把字符串转成整数
生活随笔
收集整理的這篇文章主要介紹了
【LeetCode 剑指offer刷题】字符串题6:67 把字符串转成整数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
【LeetCode & 劍指offer 刷題筆記】目錄(持續更新中...)
67?把字符串轉成整數
題目描述
將一個字符串轉換成一個整數,要求不能使用字符串轉換整數的庫函數。 數值為0或者字符串不是一個合法的數值則返回0輸入描述:
輸入一個字符串,包括數字字母符號,可以為空輸出描述:
如果是合法的數值表達則返回該數字,否則返回0 示例1輸入
復制 +2147483647 1a33輸出
復制 2147483647 0 /* 本題沒有考慮前面有空格的情況,與leetcode中題目有點不同 而且把1a33這樣的字符也當做異常,不會輸出1 1. 處理正負號 2. 處理數字 3. 處理溢出 4. 處理夾雜異常字符的情況 */ #include <climits> class Solution { public: ??? int StrToInt(string str) ??? { ??????? if(str.empty()) return 0;//處理異常情況 ??????? ??????? int sign = 1; //初始化符號 ??????? int i = 0; ??????? if(str[i] == '-') //處理正負號 ??????? { ??????????? sign = -1; ??????????? i++; ??????? } ??????? else if(str[i] == '+') ??????????? i++; ??????? ??????? long long num = 0; //long long不管在32位機還是64位機中均為64位 ??????? for(; i<str.size() && str[i] >= '0' && str[i] <= '9'; i++) //掃描數字 ??????? { ??????????? int digit = str[i] - '0'; ??????????? num = num*10 + digit; ??????????? //處理溢出問題 ??????????? if( (sign > 0&& num > INT_MAX) || (sign<0 && -num < INT_MIN) ) ??????????? { ??????????????? num = 0; ??????????????? break; ??????????? } ??????? } ??????? ??????? if(i < str.size()) num = 0; //說明是從中途退出,有異常字符 ??????? return num*sign; ??? } };?
轉載于:https://www.cnblogs.com/wikiwen/p/10224821.html
總結
以上是生活随笔為你收集整理的【LeetCode 剑指offer刷题】字符串题6:67 把字符串转成整数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 根据id/类名/元素名称查找元素
- 下一篇: HDFS2.X架构及工作原理