剑指offer67题-No53.表示数值的字符串

字符串处理

leetcode上精简的题解方法。

  • .出现正确情况:只出现一次,且在e的前面
  • e出现正确情况:只出现一次,且出现前有数字
  • +-出现正确情况:只能在开头和e后一位
class Solution {
public:
    bool isDigital(char x){
        return x >= '0' && x <= '9';
    }
    bool validNumber(string s) {
        if(s.size() == 0) return false;
        int len = s.size();
        int i = 0;
        // 前导空格和尾部空格先删了
        while(i < len && s[i] == ' ' ) i++;
        s = s.substr(i);
        while(!s.empty() && s.back() == ' ') s.pop_back();
        len = s.size();
        
        bool dotFlag = false;
        bool eFlag = false;
        bool numFlag = false;

        for(i = 0; i < len; i++){
            if(isDigital(s[i])){
                numFlag = true;
            }
            else if(s[i] == '.' && !dotFlag && !eFlag){
                // .只能出现过一次 并且一定在e前先出现
                dotFlag = true;
            }else if((s[i] == 'e' || s[i] == 'E') && !eFlag && numFlag){
                // e只能出现一次 判定为e 需要出现过数字
                eFlag = true;
                numFlag = false;     // e后必须跟一个整数 所以e之后numFlag要重新reset
            }else if((s[i] == '+' || s[i] == '-') && (i == 0 || s[i-1] == 'e' || s[i-1] == 'E')){
                continue;

            }else{
                return false;
            }
        }
        return numFlag;

    }
};
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇