【剑指offer】表示数值的字符串

表示数值的字符串

http://www.nowcoder.com/questionTerminal/6f8c901d091949a5837e24bb82a731f2

思路:首先要想到所有的情况,然后进行分类讨论。-123.45e-67

  1. +-号后面必定为数字或后面为.(-.123 = -0.123)
  2. +-号只出现在第一位或在eE的后一位
  3. .后面必定为数字或为最后一位(233. = 233.0)
  4. eE后面必定为数字或+-号
public class Solution {
    public boolean isNumeric(char[] str) {

        boolean point = false, exp = false; // 标志小数点和指数

        for (int i = 0; i < str.length; i++) {
            if (str[i] == '+' || str[i] == '-') {
                if (i + 1 == str.length || !(str[i + 1] >= '0' && str[i + 1] <= '9' || str[i + 1] == '.')) { // +-号后面必定为数字 或 后面为.(-.123 = -0.123)
                    return false;
                }
                if (!(i == 0 || str[i-1] == 'e' || str[i-1] == 'E')) { // +-号只出现在第一位或eE的后一位
                    return false;
                }


            } else if (str[i] == '.') {
                if (point || exp || !(i + 1 < str.length && str[i + 1] >= '0' && str[i + 1] <= '9')) { // .后面必定为数字 或为最后一位(233. = 233.0)
                    return false;
                }
                point = true;

            } else if (str[i] == 'e' || str[i] == 'E') {
                if (exp || i + 1 == str.length || !(str[i + 1] >= '0' && str[i + 1] <= '9' || str[i + 1] == '+' || str[i + 1] == '-')) { // eE后面必定为数字或+-号
                    return false;
                }
                exp = true;

            } else if (str[i] >= '0' && str[i] <= '9') {


            } else {
                return false;
            }

        }
        return true;
    }
}
全部评论
eE后边也不能有.吧?
1 回复 分享
发布于 2020-05-15 16:45
这个程序我觉得有问题,像这种“10e40e34”,程序执行是1,但是这种的话不是字符,还应该加入计e和.个数的变量
点赞 回复 分享
发布于 2021-01-29 17:12
给大佬点赞
点赞 回复 分享
发布于 2020-11-26 09:13
请问 28 行 else if(str[i] >= '0' && str[i] <= '9') 后面为什么什么都不写呢?
点赞 回复 分享
发布于 2020-09-03 13:35
请问 17 行为什么不是 i + 1 == str.length 呢?
点赞 回复 分享
发布于 2020-09-03 12:47
.123=+.123=0.123
点赞 回复 分享
发布于 2020-05-06 19:30
E和e不能打头,前面必须要有数字吧
点赞 回复 分享
发布于 2020-03-11 00:58
17行 .为最后一位的时候也返回false吧
点赞 回复 分享
发布于 2020-02-11 11:09
第23行,str[i] >= '0'应该是str[i+1] >= '0'吧
点赞 回复 分享
发布于 2019-12-18 11:04

相关推荐

想玩飞盘的菠萝蜜在春...:上交✌🏻也拒?
点赞 评论 收藏
分享
评论
29
2
分享

创作者周榜

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