Valid Number

Validate if a given string is numeric.

Some examples:
"0" => true
" 0.1 " => true
"abc" => false
"1 a" => false
"2e10" => true

Note: It is intended for the problem statement to be ambiguous. You should gather all requirements up front before implementing one.

public class Solution {
    public int index;
	public boolean isNumber(String s) {
		// Start typing your Java solution below
		// DO NOT write main() function
		index = 0;
		if(s.length() == 0)
			return false;
		// 去掉空格
		while(index < s.length() && s.charAt(index) == ' ')
			index++;
		
		// e 之前是否为数字
		if(!isNum(s, false))
			return false;
		// e 之后是否为数字
		if(index < s.length() && s.charAt(index) == 'e'){
			index++;
			if(!isNum(s, true))
				return false;
		}
		
		while(index < s.length() && s.charAt(index) == ' ')
			index++;
		if(index == s.length())
			return true;
		else
			return false;
	}
	public boolean isNum(String s, boolean flag){
		boolean res = false;
		if(index < s.length() && (s.charAt(index) == '-' || s.charAt(index) == '+'))
			index++;
		boolean dot = false;
		while(index < s.length()){
			if(s.charAt(index) <= '9' && s.charAt(index) >= '0'){
				res = true;
				index++;
			}
			else if(s.charAt(index) == '.'){
				if(flag) // e 后面数字不带点
					return false;
				if(dot) // 多于一个点
					return false;
				dot = true;
				index++;
			}
			else if(s.charAt(index) == 'e' || s.charAt(index) == ' ')
				return res;
			else
				return false;
		}
		return res;
	}
}

One exceptional solution!

public class Solution {
	public boolean isNumber(String s) {
		if (s == null || s.length() == 0)
			return false;
		int index = 0;
		index = skipWhiteSpaces(s, index);
		index = skipSigns(s, index);
		int n1 = skipDigits(s, index);
		index += n1;
		if (index < s.length() && s.charAt(index) == '.')
			index++;
		int n2 = skipDigits(s, index);
		index += n2;
		if (n1 == 0 && n2 == 0)
			return false;
		if (index < s.length()
				&& (s.charAt(index) == 'e' || s.charAt(index) == 'E')) {
			index++;
			index = skipSigns(s, index);
			int n3 = skipDigits(s, index);
			if (n3 == 0)
				return false;
			index += n3;
		}
		index = skipWhiteSpaces(s, index);
		return index == s.length();
	}
	public int skipWhiteSpaces(String s, int index){
		while(index < s.length() && s.charAt(index) == ' ')
			index++;
		return index;
	}
	public int skipSigns(String s, int index){
		if(index < s.length() && (s.charAt(index) == '+' || s.charAt(index) == '-'))
			return index + 1;
		return index;
	}
	public int skipDigits(String s, int index){
		int counter = index;
		while(counter < s.length() && s.charAt(counter) >= '0' && s.charAt(counter) <= '9')
			counter++;
		return counter - index;
	}
}


资源下载链接为: https://pan.quark.cn/s/d37d4dbee12c A:计算机视觉,作为人工智能领域的关键分支,致力于赋予计算机系统 “看懂” 世界的能力,从图像、视频等视觉数据中提取有用信息并据此决策。 其发展历程颇为漫长。早期图像处理技术为其奠基,后续逐步探索三维信息提取,与人工智能结合,又经历数学理论深化、机器学习兴起,直至当下深度学习引领浪潮。如今,图像生成和合成技术不断发展,让计算机视觉更深入人们的日常生活。 计算机视觉综合了图像处理、机器学习、模式识别和深度学习等技术。深度学习兴起后,卷积神经网络成为核心工具,能自动提炼复杂图像特征。它的工作流程,首先是图像获取,用相机等设备捕获视觉信息并数字化;接着进行预处理,通过滤波、去噪等操作提升图像质量;然后进入关键的特征提取和描述环节,提炼图像关键信息;之后利用这些信息训练模型,学习视觉模式和规律;最终用于模式识别、分类、对象检测等实际应用。 在实际应用中,计算机视觉用途极为广泛。在安防领域,能进行人脸识别、目标跟踪,保障公共安全;在自动驾驶领域,帮助车辆识别道路、行人、交通标志,实现安全行驶;在医疗领域,辅助医生分析医学影像,进行疾病诊断;在工业领域,用于产品质量检测、机器人操作引导等。 不过,计算机视觉发展也面临挑战。比如图像生成技术带来深度伪造风险,虚假图像和视频可能误导大众、扰乱秩序。为此,各界积极研究检测技术,以应对这一问题。随着技术持续进步,计算机视觉有望在更多领域发挥更大作用,进一步改变人们的生活和工作方式 。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值