LeetCode65——Valid Number(使用DFA)来判断字符串是否为数字
2017-06-22 15:45
369 查看
题目:
参考解法:(DFA)
class Solution {
public:
bool isNumber(string str) {
int state=0, flag=0; // flag to judge the special case "."
while(str[0]==' ') str.erase(0,1);//delete the prefix whitespace
while(str[str.length()-1]==' ') str.erase(str.length()-1, 1);//delete the suffix whitespace
for(int i=0; i<str.length(); i++){
if('0'<=str[i] && str[i]<='9'){
flag=1;
if(state<=2) state=2;
else state=(state<=5)?5:7;
}
else if('+'==str[i] || '-'==str[i]){
if(state==0 || state==3) state++;
else return false;
}
else if('.'==str[i]){
if(state<=2) state=6;
else return false;
}
else if('e'==str[i]){
if(flag&&(state==2 || state==6 || state==7)) state=3;
else return false;
}
else return false;
}
return (state==2 || state==5 || (flag&&state==6) || state==7);
}
};
参考解法:(DFA)
class Solution {
public:
bool isNumber(string str) {
int state=0, flag=0; // flag to judge the special case "."
while(str[0]==' ') str.erase(0,1);//delete the prefix whitespace
while(str[str.length()-1]==' ') str.erase(str.length()-1, 1);//delete the suffix whitespace
for(int i=0; i<str.length(); i++){
if('0'<=str[i] && str[i]<='9'){
flag=1;
if(state<=2) state=2;
else state=(state<=5)?5:7;
}
else if('+'==str[i] || '-'==str[i]){
if(state==0 || state==3) state++;
else return false;
}
else if('.'==str[i]){
if(state<=2) state=6;
else return false;
}
else if('e'==str[i]){
if(flag&&(state==2 || state==6 || state==7)) state=3;
else return false;
}
else return false;
}
return (state==2 || state==5 || (flag&&state==6) || state==7);
}
};
相关文章推荐
- 在进行C#编程时候,有的时候我们需要判断一个字符串是否是数字字符串,我们可以通过以下两种方法来实现。 【方法一】:使用 try{} catch{} 语句。 我们可以在try语句块中试图
- valid number 判断字符串是否为有效数字
- 使用CString 的 SpanIncluding 函数判断字符串是否全为数字
- 字符串是否有非数字判断 charCodeAt()的使用
- 使用CString 的 SpanIncluding 函数判断字符串是否全为数字
- 使用CString 的 SpanIncluding 函数判断字符串是否全为数字
- [LeetCode]—Valid Number 判断字符串是否为合法数据(科学计数法)
- LeetCode Valid Number(判断字符串是否是合法的数字表示 )
- C# 使用正则表达式判断字符串是否由英文或数字组成
- Swift3 Scanner用法之判断是否数字、提取字符串里的数字
- C#判断输入的字符串中是否含有大写字母,小写字母,数字,字符
- JAVA判断字符串是否为数字
- 判断字符串中是否仅包含字母数字和汉字
- java中判断字符串是否为数字的方法的几种方法 ava中判断字符串是否为数字的方法: 1.用JAVA自带的函数 public static boolean isNumeric(String str)
- 判断输入字符串是否等效Int32位数字的两种方法:int.TryParse(string s,out int result)和 Try Catch
- java中判断字符串是否为数字的三种方法
- php使用strpos判断字符串中数字类型子字符串出错的解决方法[原创]_php技巧_脚本之家
- 【面试题目】-C++中判断字符串是否全部由数字组成
- shell 判断一个字符串是否由字母数字组成
- java判断字符串是否为数字或中文或字母