题解 | #表示数值的字符串#

表示数值的字符串

http://www.nowcoder.com/practice/e69148f8528c4039ad89bb2546fd4ff8

import java.util.*;

public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param str string字符串 * @return bool布尔型 */ public boolean isNumeric (String str) { String str1 = str.trim(); if(str1.length() == 0) return false;

	return is_int(str1) || is_double(str1) || is_sic(str1);
}
private boolean is_int(String str) {
    if(str.length() == 0) return false;
	boolean flag = false;
	int i = 0;
	char c = str.charAt(i);
	if(c=='+' || c=='-') i++;
	else if(c>='0' && c<='9') {
		if(str.length() == 1) return true;
		i++;
	}
	else return false;
	
	for(;i < str.length();i++) {
		char c1 = str.charAt(i);
		if(i == str.length()-1) {
			if(c1>='0' && c1<='9') {
				flag = true;
				break;
			}else break;
		}
		
		if(c1>='0' && c1<='9') continue;
		else break;
	}
	
	return flag;
}
private boolean is_double(String str) {
	if(str.length() == 0) return false;
	boolean flag = false;
	boolean has_point = false;
	boolean has_num = false;
	int i = 0;
	char c = str.charAt(i);
	if(c=='+' || c=='-') i++;
	else if(c>='0' && c<='9') {
		has_num = true;
		i++;
	}
	else if(c == '.') {
		has_point = true;
		i++;
	}else return false;
	
	for(;i < str.length();i++) {
		char c1 = str.charAt(i);
		if(i == str.length()-1) {
			if(c1>='0' && c1<='9') {
				flag = true;
				break;
			}else if(c1=='.' && !has_point && has_num) {
				flag = true;
				break;
			}else break;
		}
		
		if(c1>='0' && c1<='9') {
			has_num = true;
			continue;
		}
		else if(c1=='.') {
			if(has_point) break;
			else {
				has_point = true;
				continue;
			}
		}else break;
	}
	
	return flag;
}
private boolean is_sic(String str) {
	String[] split = str.split("e");
	String[] split1 = str.split("E");
	if(split.length!=2 && split1.length!=2) return false;
	boolean flag = false;
	if(split.length==2) flag = (is_int(split[0]) || is_double(split[0])) && (is_int(split[1]));
	if(split1.length==2) flag = flag || (is_int(split1[0]) || is_double(split1[0])) && (is_int(split1[1]));
	return flag;
}

}

全部评论

相关推荐

10-22 12:03
山东大学 Java
程序员小白条:26届一般都得有实习,项目可以随便写的,如果不是开源社区的项目,随便包装,技术栈也是一样,所以本质应该找学历厂,多投投央国企和银行,技术要求稍微低一点的,或者国企控股那种,纯互联网一般都得要干活
应届生简历当中,HR最关...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务