給定一個string s, 判斷能不能解釋成十進制數字。
題目很好心得列了用來作有效的十進制的字元:
以上有4個,我們為每個宣告一個bool,並從index=0開始,哪個有就變為true,沒有則false,然後看看是否符合規則。分別是 number、exp、sign、point。
以下分別遇到的情況:
如果是這些以外的字元,則會跳出迴圈。
class Solution {
public:
bool isNumber(string s) {
bool exp = false;
bool number = false;
bool sign = false;
bool point = false;
int idx = 0;
for(idx = 0; idx < s.size() && s[idx] == ' '; idx++);
for(; idx < s.size(); idx++){
if(isdigit(s[idx])) {
number = true;
}
else if(s[idx] == '+' || s[idx] == '-'){
if (number || point){
return false;
}
if (!sign){
sign = true;
}
else{
return false;
}
}
else if(s[idx] == '.'){
if (exp){
return false;
}
if (!point){
point = true;
}
else{
return false;
}
}
else if(s[idx] == 'e'){
if(!number){
return false;
}
if(!exp){
exp = true;
}
else{
return false;
}
sign = false;
point = false;
number = false;
}
else{
break;
}
}
for(; idx < s.size() && s[idx] == ' '; idx++);
return number && idx == s.size();
}
};