剑指offer:表示数值的字符串cpp题解:指针
生活随笔
收集整理的這篇文章主要介紹了
剑指offer:表示数值的字符串cpp题解:指针
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
文章目錄
- 題目來源
分析
題意:需要判斷是小數(shù)和科學計數(shù)法。
這里的奇淫巧計是:e之前必須是數(shù)(小數(shù)或者整數(shù));e后面需要是整數(shù)(可以有符號位)
這就啟發(fā)我們:用一個指針i,從前往后遍歷,確定是否是數(shù)字,直到遇到e為止。后面判斷是不是整數(shù)即可。
return true 的條件是:整體是合法數(shù)字而且指針走到string的下一個位置,即i == s.size().
反過來說:如果i沒有走到string 的最后,說明中間有不滿足的地方,即該字符串不是數(shù)值。
另一點需要注意的是:前面或者后面可能有多余的空格。
ac代碼
class Solution { public:bool isNumber(string s) {int i = 0; // 指針bool isNum = false; // 初始s不是數(shù)字while (s[i] == ' ') i ++; // 前導空格if (s[i] == '+' || s[i] == '-') i ++; // 允許一位符號while (isdigit(s[i])) { // 整數(shù)部分isNum = true;i ++;}if (s[i] == '.') {// 允許一位小數(shù)點i ++;}// 小數(shù)部分while (isdigit(s[i])) {isNum = true;i ++;}// 下面是判斷eif (isNum && (s[i] == 'e' || s[i] == 'E')) {i ++;// 允許一位符號if (s[i] == '+' || s[i] == '-') i ++;isNum = false; // 此時,e后面還沒有整數(shù),isNum為false// 整數(shù)部分while (isdigit(s[i])) {isNum = true;i ++;}}// 取出末尾空格while (s[i] == ' ') i ++;bool res = isNum && (i == s.size());return res;} };題目來源
https://leetcode-cn.com/problems/biao-shi-shu-zhi-de-zi-fu-chuan-lcof/
https://www.acwing.com/problem/content/29/
總結
以上是生活随笔為你收集整理的剑指offer:表示数值的字符串cpp题解:指针的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2021合工大超越卷数二好题精选
- 下一篇: 剑指offer:调整数组顺序使奇数位于偶