一、题目
二、思路
把所有情况考虑到,先把给出实例的情况考虑到,一个一个添加条件对应解决
三、代码
class Solution
{
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param str string字符串
* @return bool布尔型
*/
vector<char> res;
bool isNumeric(string str)
{
if(str.length()==0 || str[0]==' ')
{
return false;
}
for (int i = 0; i < 10; ++i)
{
res.emplace_back((i + '0'));
}
vector<char> dic(res);
dic.emplace_back('.');
dic.emplace_back('+');
dic.emplace_back('-');
dic.emplace_back('e');
dic.emplace_back('E');
if (str[0] == '.' || str[0] == 'e' || str[0] == 'E' || find(res.begin(), res.end(), str[str.length() - 1]) == res.end() || find(dic.begin(), dic.end(), str[0]) == dic.end())
{
return false;
}
int point=0;
int eE=0;
int zhengfu=0;
char chart=str[0];
for (int i = 1; i < str.length() - 1; ++i)
{
if((str[0]=='-' || str[0]=='+') && (str[1]=='e' || str[1]=='E'))
{
return false;
}
if((chart=='+' || chart=='-') && (str[i]=='+' || str[i]=='-'))
{
return false;
}
if(str[i]=='.' && eE>0)
{
return false;
}
auto result = find(dic.begin(), dic.end(), str[i]);
if (result == dic.end())
{
return false;
}
if(str[i]=='.')
{
point++;
}
if(str[i]=='e' || str[i]=='E')
{
eE++;
}
if(str[i]=='-' || str[i]=='+')
{
zhengfu++;
}
chart=str[i];
}
if(point>1 || eE>1 || zhengfu>1)
{
return false;
}
if(eE==0 && zhengfu>0)
{
return false;
}
return true;
}
};