题目描述
请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。
- public class Solution {
- boolean isNumeric(char[] str) {
- boolean e = false;
- boolean dian = false;
- if(str.length==0) return false;
- if(str[0]=='+' || str[0]=='-'){
- if(str.length==1) return false;
- else if(str[1]=='.') dian=true;
- else if(str[1]<='0'||str[1]>'9'){
- return false;
- }
- }else if(str[0]<='0'||str[0]>'9'){
- return false;
- }
-
- for(int i=1;i<str.length;i++){
- if(str[i]<'0'||str[i]>'9'){
- if(str[i]=='e' || str[i]=='E'){
- if(i==str.length-1) return false;
- if(!e) e = true;
- else return false;
- }else if(str[i]=='+' ||str[i]=='-'){
- if(str[i-1]!='e'&&str[i-1]!='E') return false;
- }else if(str[i]=='.'){
- if(i!=1){
- if(dian) return false;
- if(e) return false;
- }
- dian = true;
- }else{
- return false;
- }
- }
- }
- return true;
- }
- }
原文链接 http://blog.csdn.net/crazy__chen/article/details/45098787