建设网站要学编程吗,网页设计如何收费,网站营销方式,中国十大设计素材网站题目 请实现一个函数用来判断字符串是否表示数值#xff08;包括整数和小数#xff09;。
数值#xff08;按顺序#xff09;可以分成以下几个部分#xff1a;
若干空格一个 小数 或者 整数#xff08;可选#xff09;一个 e 或 E #xff0c;后面跟着一个 整数若干空…题目 请实现一个函数用来判断字符串是否表示数值包括整数和小数。
数值按顺序可以分成以下几个部分
若干空格一个 小数 或者 整数可选一个 e 或 E 后面跟着一个 整数若干空格
小数按顺序可以分成以下几个部分
可选一个符号字符 或 -下述格式之一 至少一位数字后面跟着一个点 .至少一位数字后面跟着一个点 . 后面再跟着至少一位数字一个点 . 后面跟着至少一位数字
整数按顺序可以分成以下几个部分
可选一个符号字符 或 -至少一位数字
部分数值列举如下
[100, 5e2, -123, 3.1416, -1E-16, 0123]
部分非数值列举如下
[12e, 1a3.14, 1.2.3, -5, 12e5.4] 示例 1 输入s 0输出true 示例 2 输入s e输出false 示例 3 输入s .输出false 示例 4 输入s .1 输出true 提示
1 s.length 20s 仅含英文字母大写和小写数字0-9加号 减号 - 空格 或者点 . 。 解题思路 1.题目要求我们判断字符串是否表示数值对于这种题我们需要进行分类讨论来对每一种情况进行判断。 2.首先我们判断一下字符串 s 是否为空若为空就返回 false。然后因为空格是合法的但是它会影响我们的判断所以我们需要去除空格用trim函数再将去除后的元素放入字符数组res中方便我们进行判断。 3.之后我们用for循环进行遍历逐一列举可能的情况并进行判断大家可以结合流程图和代码进行理解。 代码实现
class Solution {public boolean isNumber(String s) {if(s null || s.length() 0){return false;}char[] res s.trim().toCharArray();if(res.length 0){return false;} int n res.length;boolean is_dot false;boolean is_num false;boolean is_E_or_e false;for(int i 0; i n; i){//当前元素为数字时if(res[i] 0 res[i] 9 ){is_num true;//当前元素为.时}else if(res[i] .){//前面不能有.和e/Eif(is_dot || is_E_or_e){return false;}is_dot true;//当前元素为e/E时}else if(res[i] e || res[i] E){//前面必须有一个数字,前面不能出现e/Eif(!is_num || is_E_or_e){return false;}is_E_or_e true;is_num false; //防止发送11E的这种情况所以要将is_num重置//当前元素为-时}else if(res[i] || res[i] -){if(i ! 0 res[i-1] ! e res[i-1] ! E){return false;}//不是以上的五种字符}else{return false;}}return is_num;}
}
测试结果