[LeetCode] 65. Valid Number(多个标志位)

时间:2023-03-09 04:08:47
[LeetCode] 65. Valid Number(多个标志位)

[LeetCode] 65. Valid Number(多个标志位)

【思路】该题题干不是很明确,只能根据用例来理解什么样的字符串才是符合题意的,本题关键在于几个标志位的设立,将字符串分为几个部分,代码如下:

 class Solution
{
public:
string trim(string s)
{
int i=;
while(s[i]==' ') i ++; //开头处为空格或者Tab,则跳过
s=s.substr(i);
i=s.size()-;
while(s[i]==' ') i --; //结尾处为空格或者Tab,则跳过
s=s.substr(,i+);
return s;
}
bool isNumber(string s)
{
s = trim(s); bool pointSeen = false;
bool eSeen = false;
bool partOne = false;
bool partTwo = false; for(int i = ; i < s.length(); i ++)
{
if(s[i] >= '' && s[i] <= '')
{
if(!eSeen)
partOne = true;
else
partTwo = true;
}
else if(s[i] == '.')
{
if(pointSeen || eSeen)
return false;
pointSeen = true;
}
else if(s[i] == 'e')
{
if(eSeen || !partOne)
return false;
eSeen = true;
}
else if(s[i] == '+' || s[i] == '-')
{
if(i != && s[i - ] != 'e')
return false;
}
else return false;
}
if(!partOne)
return false;
else if(eSeen && !partTwo)
return false;
else
return true;
}
};