`
frank-liu
  • 浏览: 1682144 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

leetcode: Valid Number

 
阅读更多

问题描述:

Validate if a given string is numeric.

Some examples:
"0" => true
" 0.1 " => true
"abc" => false
"1 a" => false
"2e10" => true

Note: It is intended for the problem statement to be ambiguous. You should gather all requirements up front before implementing one.

Update (2015-02-10):
The signature of the C++ function had been updated. If you still see your function signature accepts a const char * argument, please click the reload button  to reset your code definition.

原问题链接:https://leetcode.com/problems/valid-number/

 

问题分析

  这个问题的复杂在于它本身要处理和判断的条件非常多,我们需要把这些所有的都整理出来。针对所有的情况来说,来列一下:

首先,在这里一个合法的数字字符串可以两边包含有空格,所以这是第一步需要处理的情况。

其次,这里的数字可能有符号,包括正,负符号,所以这是接着要判断处理的。

接着就是对于数字来说它可能是小数或者整数。对于整数来说,我们只需要记录里面出现数字的个数以及当前的索引。对于小数来说,还需要判断当前的元素是否为小数点。

这里还有一种情况,就是指数形式的表示,这里需要判断里面是否有字符e。当有这个字符的时候,需要接着再去判断后面包含有数字的个数不能为0个以及指数部分是否包含有符号,同时根据最后的索引是否到达字符串的末尾来判断。

  详细的实现如下:

 

public class Solution {
    public boolean isNumber(String s) {
        char[] c = s.trim().toCharArray();

        if (c.length == 0) return false;
    
        int i = 0, num = 0;
        if (c[i] == '+' || c[i] == '-') i++;
    
        for(; i < c.length && (c[i] >= '0' && c[i] <= '9'); i++) num++;
        if (i < c.length && c[i] == '.') i++;
        for(; i < c.length && (c[i] >= '0' && c[i] <= '9'); i++) num++;
    
        if(num == 0) return false;
    
        if(i == c.length) return true;
        else if(i < c.length && c[i] != 'e') return false;
        else i++;
    
        num = 0;
        if(i < c.length && (c[i] == '+' || c[i] == '-')) i++;
    
        for(; i < c.length && (c[i] >= '0' && c[i] <= '9'); i++) num++;
        if (num == 0) return false;
    
        if(i == c.length) return true;
        else return false;
    }
}

 

 

分享到:
评论

相关推荐

    javalruleetcode-LeetCode::lollipop:个人LeetCode习题解答仓库-多语言

    java lru leetcode :ice_cream: LeetCode ...Valid Parentheses 26 Remove Duplicates from Sorted Array 48 Rotate Image 53 Maximum Subarray 55 Jump Game 56 Merge Intervals 64 Minimum Path Sum 73

    leetcode:关于leetcode网站上的题目代码

    leetcode 持续刷leetcode中... 欢迎大家交流,也欢迎star. 关于leetcode网站上的题目解法,语言选择的Java。后续会进行题目翻译和解法分析。 题目分析: Easy Leetcode 760 : Find Anagram ...Leetcode 794: Valid

    leetcode最难-LeetCode_ValidNumber:因为我疯了,所以我去了LeetCode,并按Hardest:LeastSolv

    leetcode最难LeetCode_ValidNumber 因为我疯了,所以我去了 LeetCode,并按 Hardest:LeastSolved 排序。 没有汗! 语言:C# 我学到的是 这个很疯狂,因为它在定义实际可以算作数字方面确实做得很差。 如果这是面对面...

    java-leetcode题解之Number of Valid Words for Each Puzzle.java

    java java_leetcode题解之Number of Valid Words for Each Puzzle.java

    leetcode中国-leetcode:leetcode刷题

    number, hard, 用有限自动机 integer to roman ,easy , 模拟 roman to integer ,easy , 模拟 count and say , easy , 模拟 Anagrams 字符串处理,map Simplify Path,字符串处理,stack Length of Last Word,字符串...

    leetcode:Leetcode学习代码

    例如,"Valid Parentheses" (题号 20) 检查括号字符串是否有效。 5. **树**:涉及二叉树、平衡二叉树、二叉搜索树等。例如,"Binary Tree Inorder Traversal" (题号 94) 需要按照中序遍历顺序打印二叉树的节点。 6...

    leetcode分类-leetcode:leetcode刷题(中等难度分类)

    字符串处理题目也是LeetCode的重要部分,例如"Reverse Words in a String"(翻转字符串中的单词)和"Valid Palindrome"(验证回文串)。这些题目通常涉及到字符串的遍历、分割、比较以及特殊字符的处理。 四、位...

    最大公共字符串leetcode-leetcode:坚持每周刷一道LeetCode题

    number of nodes along the shortest path from the root node down to the nearest leaf node. 解题思路: 思路一:深度优先遍历,递归遍历左右子树,遇到叶子节点时返回 1,返回过程中,比较左右子树,较小深度...

    Leetcode扑克-leetcode:Leetcode算法实践

    Number 电话号码的字母组合 回溯法,递归 / Backtrack,Recursion 回溯+递归 Daily Challenge 2020/08/26 20 Valid Parentheses 有效的括号 Stack / 栈 用栈实现配对 Daily Challenge 2020/08/14 28 Implement ...

    dna匹配leetcode-leetcode:leetcode刷题

    Valid Sudoku 数组 遍历 Sudoku Solver 深度优先遍历 回溯 先检查后修改 Group Anagrams 排序 unordered_map Minimum Window Substring 两个指针遍历 map Maximal Rectangle 栈 局部递增 或者 动态规划 Binary Tree ...

    leetcode分类-leetcode:leetcode

    比如,实现strStr()函数(Implement strStr())和有效的括号(Valid Parentheses)等,需要深入理解字符串操作和正则表达式。 6. **哈希表**:哈希表提供高效的查找和插入操作,常用于解决查找重复项、最近点对等...

    LeetCode:LeetCode题解

    LeetCode LeetCode题解 传送门 # 标题 解决方案 困难 笔记 1个 简单的 3 ... Valid_Palindrome Java 简单的 136 单号 Java 简单的 137 Single_NumberII Java 中等的 167 Two_Sum_II_Input_

    lrucacheleetcode-leetcode:leetcode

    Number 11. Container With Most Water 12. Integer to Roman 13. Roman to Integer 14. Longest Common Prefix 15. 3Sum 20. Valid Parentheses 21. Merge Two Sorted Lists 22. Generate Parentheses 25. Reverse ...

    leetcodepython001-LeetCode:力码

    leetcode Python 001 力码 简单的 # 问题 完成日期 语 001 001_Two_Sum 2021 年 1 月 5 日 Python 002 007_Reverse_Integer 2021 年 1 月 7 日 Python 003 009_Palindrome_Number 2021 年 1 月 7 日 Python 004 013_...

    leetcode题库-LeetCode:力码

    Number.cpp 12 整数转罗马数字 Integer to Roman.cpp 13 罗马数字转整数 Roman to Integer.cpp 15 三数之和 3Sum.cpp 最接近的三数之和 3Sum Closest .cpp 20 有效的括号 Valid Parentheses.cpp 22 括号生成 G

    leetcode和oj-leetCode:尝试一些OJ

    Number 52.2% Easy 371 两个整数的和 51.6% Easy 104 二叉树的最大深度 50.1% Easy 325% Add the Easy 389.数字 49.9% 简单 226 反转二叉树 48.9% 简单 283 移动零点 46.9% 简单 404 左叶总和 45.5% 简单 383 赎金...

    validnumberleetcode自动机-LeetCode:LeetCode学习记录

    valid number leetcode 自动机 老衲的 LeetCode Easy(2021-01-02) 1. 题目地址: 描述: 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 题解: 2. 题目地址: 描述: 判断一个整数是否是...

    Leetcode:我的Leetcode问题代码

    2. **集合框架:** Java的集合框架包括List(ArrayList, LinkedList)、Set(HashSet, TreeSet)、Map(HashMap, TreeMap)等,它们在解决LeetCode问题时起到关键作用,如“有效的括号”(Valid Parentheses)可能...

    leetcode双人赛-LeetCode:力扣笔记

    leetcode双人赛LeetCode 编号 题目 难度 题型 备注 Two Sum 简单 Add Two Numbers 中等 链结串列 重要 Longest Substring Without Repeating Characters 中等 字串 重要 Median of Two Sorted Arrays 困难 数学 ...

    leetcode跳跃-LeetCode:力扣刷题70道!

    Number of Recent Calls 力扣 225 用队列实现栈 | Implement Stack Using Queue 力扣 622 设计循环队列 | Design Circular Queue 力扣 641 设计循环双端队列 | Design Circular Deque 栈 Stack 力扣 20 有效的括号 |...

Global site tag (gtag.js) - Google Analytics