日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

【LeetCode 剑指offer刷题】字符串题6:67 把字符串转成整数

發布時間:2025/7/14 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【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 把字符串转成整数的全部內容,希望文章能夠幫你解決所遇到的問題。

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