题解 | #把字符串转换成整数#
表示数值的字符串
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;
}
}
