您的位置:首页 > 其它

LeetCode 65 - Valid Number

2016-04-07 18:42 537 查看

Valid Number

Validate if a given string is numeric.

Some examples:
"0"
 => 
true

" 0.1 "
 => 
true

"abc"
 => 
false

"1 a"
 => 
false

"2e10"
 => 
true


Note: It is intended for the problem statement to be ambiguous. You should gather all requirements up front before implementing one.

My Code

class Solution {
public:
bool isRealNumber(string s)
{
int len = s.length();
if (len == 0)
return false;
if (s == "-" || s == "." || s == "+" || s == "-." || s == "+.")
return false;

int i = 0;
if (s[i] == '-' || s[i] == '+')
i++;

int dotCnt = 0;
for (; i < len; i++)
{
if (s[i] == '.')
{
dotCnt++;
if (dotCnt >= 2)
return false;
}
else if (s[i] >= '0' && s[i] <= '9')
continue;
else
return false;
}

return true;
}

bool isInteger(string s)
{
int len = s.length();
if (len == 0)
return false;
if (s == "-" || s == "+")
return false;

int i = 0;
if (s[i] == '-' || s[i] == '+')
i++;

int dotCnt = 0;
for (; i < len; i++)
{
if (s[i] >= '0' && s[i] <= '9')
continue;
else
return false;
}

return true;
}

bool isNumber(string s) {
int len = s.length();
int start = 0;
while (s[start] == ' ' || s[start] == '\t')
start++;
int end = len - 1;
while (s[end] == ' ' || s[end] == '\t')
end--;
s = s.substr(start, end-start+1);

int pos = s.find('e');
if (pos == -1)
{
return isRealNumber(s);
}
else
{
return isRealNumber(s.substr(0, pos)) && isInteger(s.substr(pos + 1));
}
}
};
Runtime: 12 ms



Testcases

InputResult
-1e-10true
-false
.false
.01true
-.01true
1.true
-1.true
01true
-01true
1efalse
e1false
efalse
1e0true
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: