zoukankan      html  css  js  c++  java
  • leetcode刷题笔记六十五 有效数字

    leetcode刷题笔记六十五 有效数字

    源地址:65. 有效数字

    问题描述:

    验证给定的字符串是否可以解释为十进制数字。

    例如:

    "0" => true
    " 0.1 " => true
    "abc" => false
    "1 a" => false
    "2e10" => true
    " -90e3 " => true
    " 1e" => false
    "e3" => false
    " 6e-1" => true
    " 99e2.5 " => false
    "53.5e93" => true
    " --6 " => false
    "-+3" => false
    "95a54e53" => false

    说明: 我们有意将问题陈述地比较模糊。在实现代码之前,你应当事先思考所有可能的情况。这里给出一份可能存在于有效十进制数字中的字符列表:

    数字 0-9
    指数 - "e"
    正/负号 - "+"/"-"
    小数点 - "."
    当然,在输入中,这些字符的上下文也很重要。

    代码补充:

    /**
    本题较为繁杂,主要是针对错误选项要进行一一排查
    */
    object Solution {
        def isNumber(s: String): Boolean = {
            s match {
                //排除空格及空字符串
                case s if Option(s) == None => false
                case s if s.trim.length == 0 => false
    			
                //判断字符串具体情况
                case s => {
                    //将字符串左右侧的空格去除
                    val str = s.trim
                    /**
                    digit : 标记目前已检索数字情况
                    dot   : 标记目前已检索小数点情况
                    sign  : 标记目前已检索符号情况
                    e	  : 标记目前已检索指数情况
                    */
                    var digit = false
                    var dot = false
                    var sign = false
                    var e = false
    
                    for(c <- str){
                        //空串
                        if(c == ' ') return false
                        //排除"*E*E" 及 E之前底数
                        if(c == 'e' && (e == true || digit == false)) return false
                        //排除".*."及"e*."
                        if(c == '.' && (dot == true || e == true)) return false
                        //排除"+|-"出现在
                        if((c == '+' || c == '-') && (sign == true || digit == true || dot == true))  return false
                        //出现数字 认为已放置数字
                        if(c >= '0' && c <= '9') digit = true
                        //出现符号,认为已放置符号
                        else if (c == '+' || c == '-') sign = true
                        //出现小数点,认为已放置小数点
                        else if (c == '.') dot = true
                        //底数确定,判断指数
                        else if (c == 'e') {
                            e = true
                            digit = false
                            dot = false
                            sign = false
                        }
                        else return false
                    }
                    //底数确定,指数错误
                    if (e == true && digit == false) return false
                return digit
                }
            }
        }
    }
    
  • 相关阅读:
    how to pass a Javabean to server In Model2 architecture.
    What is the Web Appliation Archive, abbreviation is "WAR"
    Understaning Javascript OO
    Genetic Fraud
    poj 3211 Washing Clothes
    poj 2385 Apple Catching
    Magic Star
    关于memset的用法几点
    c++ 函数
    zoj 2972 Hurdles of 110m
  • 原文地址:https://www.cnblogs.com/ganshuoos/p/13306520.html
Copyright © 2011-2022 走看看