Leetcode Valid Number
2024-10-15 17:56:21
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.
只需要考虑正负号,小数点,指数e符号,数字四种可能,除了它们之外的字符,程序返回false。
- 正负号:只能出现在第一个字符或者e后面,不能出现在最后一个字符
- 小数点:字符串不能只含有小数点,也不能只含正负号和小数点,小数点不能在e或者小数点后
- e:e不能出现在第一个字符,也不能出现在最后一个字符,e前面不能没有数字,也不能有e
class Solution {
public:
bool isVaild(char c){
if(c=='+' || c=='-' || c == '.' || c=='e' || c>=''&& c <= '') return true;
else return false; } bool isNumber(const char *s) {
string str(s);
bool res = false;
size_t pos = str.find_first_not_of(" ");
if(pos!=string::npos) str=str.substr(pos); //去掉前端空格
else str="";
pos = str.find_last_not_of(" ");
str=str.substr(,pos+); //去掉后端空格
if(str == "") return res;
bool hasSign = false, hasDot = false, hasExp = false, hasDigit = false;
int len = str.length();
for(int i = ; i < len ;++ i){
char ch = str[i];
if(!isVaild(ch)) return false;
switch(ch){
case '+':
case '-':
//不在第一个或者e后面;在最后一个字符
if((i!= && str[i-]!='e') || i== len-) return false;
else hasSign = true;
break;
case '.':
//只有一个字符的情况;只有符号和点;在e和点之后
if(len == || (len == && hasSign) || hasExp || hasDot) return false;
else hasDot = true;
break;
case 'e':
//出现在第一个或最后一个;前面没有数字;前面有e
if(i == || i == len- || !hasDigit || hasExp) return false;
else hasExp = true;
break;
default:
hasDigit = true;
break;
}
}
return true;
}
};
最新文章
- phpRedis安装、配置及简单使用
- if语句的一个小技巧
- (转)Silverlight控件关系理解
- 函数return/获取元素样式/封装自己的库
- SAM4E单片机之旅——19、CAN间通信
- THE ONE THING PEOPLE WILL MASSIVELY OVERPAY FOR (有一个东西人们是愿意出高价购买的)
- Nginx启动报错:10013: An attempt was made to access a socket in a way forbidden
- java class生成jar包(转)
- 真&#183;浅谈treap树
- Windows2003系统如何设置能让两个人共用一个桌面同时远程控制?
- Flutter - 创建底部导航栏
- java解压缩.gz .zip .tar.gz等格式的压缩包方法总结
- Android平台下OpenGL图形编程
- Mac下使用crontab来实现定时任务
- 三:SpringCloud-Ribbon
- chromium 安裝 flash
- 【题解】洛谷P4180 [BJWC2010] 严格次小生成树(最小生成树+倍增求LCA)
- win10网速慢
- 常见协议基础知识总结--DHCP协议
- 见微知著(三):解析ctf中的pwn--Fastbin和bins的溢出