有效数字-LintCode

来源:互联网 发布:淘宝买化妆品可靠吗 编辑:程序博客网 时间:2024/04/30 21:18

给定一个字符串,验证其是否为数字。

样例:
“0” => true
” 0.1 ” => true
“abc” => false
“1 a” => false
“2e10” => true

思路:
考虑一些特例:
“.1” “1.” True ; “e1” “1e” False;
” 34 ” True;
“-8” “+.8” True;
“00009” True;

#ifndef C417_H#define C417_H#include<iostream>#include<string>using namespace std;class Solution {public:    /*    * @param s: the string that represents a number    * @return: whether the string is a valid number    */    bool isNumber(string &s) {        // write your code here        if (s.empty())            return false;        int len = s.size();         int l = 0, r = len - 1;        while (l < r)        {            if (s[l] == ' '&&s[r] == ' ')            {                ++l;                --r;            }            else if (s[l] == ' '&&s[r] != ' ')            {                ++l;            }            else if (s[l] != ' '&&s[r] == ' ')            {                --r;            }            else            {                break;            }        }        if (l == r)        {            if (!isdigit(s[l]))            {                return false;            }        }        int flagP = 0, flagE = 0;        for (int i = l; i <= r; ++i)        {            if (!isdigit(s[i]) && s[i] != '.'&&s[i]!='e'&&s[i]!='+'&&s[i]!='-')            {                return false;                break;            }            if (i == l||i==r)            {                if (s[i] == 'e')                {                    return false;                    break;                }            }            if (i != l)            {                if (s[i] == '+' || s[i] == '-')                {                    return false;                    break;                }            }            if (s[i] == 'e')            {                if (flagE == 0)                    flagE = 1;                else                {                    return false;                    break;                }            }            if (s[i] == '.')            {                if (flagP == 0)                    flagP = 1;                else                {                    return false;                    break;                }            }        }        return true;    }};#endif
原创粉丝点击