leetcode 65. 有效数字-java实现

题目所属分类

比较麻烦的科学计数法的模拟题

原题链接

在这里插入图片描述

题解

在这里插入图片描述

class Solution {
    public boolean isNumber(String s) {
        //去掉空格
        int l = 0;
        int r = s.length()-1 ;
        while(l <= r && s.charAt(l) == ' ') l++ ;
        while( l <= r && s.charAt(r) == ' ' )r-- ;
        if(l > r ) return false;//说明字符串空的
        s = s.substring(l , r + 1);
        //前面正负号 去掉
        if(s.charAt(0) == '+' || s.charAt(0) == '-') s = s.substring(1);
        //没有去掉
        if(s.length() == 0) return false;
        //只有这种符号去掉
        if(s.charAt(0) == '.' && (s.length() == 1 || s.charAt(1) == 'e' || s.charAt(1) == 'E'))
            return false;
        //记录.  e 的个数了
        int dot = 0 , e = 0 ;
        for(int i = 0 ; i < s.length() ; i++){
            if(s.charAt(i) == '.'){
                if(dot > 0 || e > 0) return false;
                dot ++ ;         
            }else if(s.charAt(i) == 'e' || s.charAt(i) == 'E'){
                //e的前面是空的 后面是空的 e之前存在过 返回false
                if(i == 0 || i+1 == s.length() || e > 0) return false ;
                //如果e的后面是正负号的话
                if(s.charAt(i+1) == '+' || s.charAt(i+1) == '-'){
                    //e后面还没有数
                    if(i+2 == s.length()) return false;
                    //否则正负号跳过
                    i++ ;
                }
                e++ ;
            }else if(s.charAt(i) < '0' || s.charAt(i) > '9')return false ;

            
        }
        return true ;

    }
}
posted @   依嘫  阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示