JZ53 表示数值的字符串
2021/9/2 23:08:56
本文主要是介绍JZ53 表示数值的字符串,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
原题链接
描述
请实现一个函数用来判断字符串str是否表示数值(包括科学计数法的数字,小数和整数)。
示例
输入:"123.45e+6" 返回值:true
思路
从头依次遍历,针对各种情况设置符号标志,乍一看比较简单的但是细节很多,一不小心就会遗漏一些。有些会被认为不是数值的输入也会返回 true,主要有"1." ".1"
。
解答
package com.klaus.math.prob53; public class Solution { public boolean isNumeric(String str) { int context = 0;// 是否有意义的内容 int token = 0; int before = 0;//点前面的位数 int point = 0; int after = 0;// 点后面的位数 int e = 0; for (int i = 0; i < str.length(); ++i) { // 空格 if (str.charAt(i) == ' ') { --context; } // 正负号 else if (str.charAt(i) == '+' || str.charAt(i) == '-') { // 幂符号 if (i == 0) { ++token; } // 指数符号 else if (str.charAt(i - 1) == 'e' || str.charAt(i - 1) == 'E') { ++token; } else return false; if (token > 1) return false; } // e else if (str.charAt(i) == 'e' || str.charAt(i) == 'E') { if (before == 0) return false; ++e; if (e > 1) return false; token = 0; point = 1; } // 小数点 else if (str.charAt(i) == '.') { point++; after = 0; if (point > 1) return false; } // 数字 else if (str.charAt(i) >= '0' && str.charAt(i) <= '9') { if (point == 0) { before++; after++; } else after++; } else { return false; } ++context; } // 如果没有点 if (e == 1 && after == 0) return false; if (token == 1 && after == 0) return false; if (context <= 0) return false; if (point == 1 && after == 0 && before == 0) return false; return true; } }
这篇关于JZ53 表示数值的字符串的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-23线下车企门店如何实现线上线下融合?
- 2024-12-23鸿蒙Next ArkTS编程规范总结
- 2024-12-23物流团队冬至高效运转,哪款办公软件可助力风险评估?
- 2024-12-23优化库存,提升效率:医药企业如何借助看板软件实现仓库智能化
- 2024-12-23项目管理零负担!轻量化看板工具如何助力团队协作
- 2024-12-23电商活动复盘,为何是团队成长的核心环节?
- 2024-12-23鸿蒙Next ArkTS高性能编程实战
- 2024-12-23数据驱动:电商复盘从基础到进阶!
- 2024-12-23从数据到客户:跨境电商如何通过销售跟踪工具提升营销精准度?
- 2024-12-23汽车4S店运营效率提升的核心工具