题解 | #把字符串转换成整数#
表示数值的字符串
http://www.nowcoder.com/practice/e69148f8528c4039ad89bb2546fd4ff8
我是有多无聊才对着不通过的数据一个个情况枚举^_^
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param str string字符串 * @return bool布尔型 */ public boolean isNumeric (String str) { int point=0; int add=0,de=0; int e_mark=0; int math=0; //遍历一遍,如果当前字符不是数字,且不是合法字符 (.+-eE),直接返回false for(int i=0;i<str.length();i++){ if(str.charAt(i)-'0'>=0&&str.charAt(i)-'0'<=9){ math++; } if(str.charAt(i)-'0'9){ if(str.charAt(i)!='.'&&str.charAt(i)!='+'&&str.charAt(i)!='-'&&str.charAt(i)!='e'&&str.charAt(i)!='E'){ return false; } } if((str.charAt(i)=='e'||str.charAt(i)=='E')&&i==str.length()-1){ return false; } if(str.charAt(i)=='+' && i!=0 && (str.charAt(i-1)!='e'&&str.charAt(i-1)!='E')){ return false; } if(str.charAt(i)=='e'||str.charAt(i)=='E'){ if(i==1&& (str.charAt(i-1)-'0'9)){ System.out.println(111); return false; } } if(str.charAt(i)=='.'){ point++; if(point>=2){ return false; } if(e_mark==1){ return false; } } if(str.charAt(i)=='-'){ de++; if(add>=1&&de>=1){ return false; } } if(str.charAt(i)=='+'){ add++; if(i==str.length()-1)return false; if(add>=1&&de>=1){ return false; } } if(str.charAt(i)=='e'){ e_mark=1; } //否则可能合法,再遍历一次,记录合法运算符符数量 } if(math==0){ return false; } return true; } }