![[LeetCode] 65. Valid Number(多个标志位) [LeetCode] 65. Valid Number(多个标志位)](https://image.shishitao.com:8440/aHR0cHM6Ly9ia3FzaW1nLmlrYWZhbi5jb20vdXBsb2FkL2NoYXRncHQtcy5wbmc%2FIQ%3D%3D.png?!?w=700&webp=1)
【思路】该题题干不是很明确,只能根据用例来理解什么样的字符串才是符合题意的,本题关键在于几个标志位的设立,将字符串分为几个部分,代码如下:
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;
}
};