zoukankan      html  css  js  c++  java
  • LeetCode: Valid Number

    leetcode里最恶心的题目。。面试问这种题目可以去撞墙了。。

     自己写了一遍

     1 class Solution {
     2 public:
     3     bool isNumber(const char *s) {
     4         // Start typing your C/C++ solution below
     5         // DO NOT write int main() function
     6         while (isspace(*s)) s++;
     7         if (*s == '+' || *s == '-') s++;
     8         bool space, e, dot, first, second;
     9         space = e = dot = first = second = false;
    10         while (*s != '\0') {
    11             if (*s == '.') {
    12                 if (e || space || dot || second) return false;
    13                 dot = true;
    14             }
    15             else if (*s == 'e') {
    16                 if (e || space || !first) return false;
    17                 e = true;
    18             }
    19             else if (isdigit(*s)) {
    20                 if (space) return false;
    21                 if (!e) first = true;
    22                 else second = true;
    23             }
    24             else if (isspace(*s)) space = true;
    25             else if (*s == '+' || *s == '-') {
    26                 if (space || *(s-1) != 'e') return false;
    27             }
    28             else return false;
    29             s++;
    30         }
    31         if (!first) return false;
    32         if (e && !second) return false;
    33         return true;
    34     }
    35 };

     C#

     1 public class Solution {
     2     public bool IsNumber(string s) {
     3         int cur = 0;
     4         while (cur < s.Length && s[cur] == ' ') cur++;
     5         if (cur < s.Length && (s[cur] == '+' || s[cur] == '-')) cur++;
     6         bool space, e, dot, first, second;
     7         space = e = dot = first = second = false;
     8         while (cur < s.Length) {
     9             if (s[cur] == '.') {
    10                 if (e || space || dot || second) return false;
    11                 dot = true;
    12             }
    13             else if (s[cur] == 'e') {
    14                 if (e || space || !first) return false;
    15                 e = true;
    16             }
    17             else if (s[cur] >= '0' && s[cur] <= '9') {
    18                 if (space) return false;
    19                 if (!e) first = true;
    20                 else second = true;
    21             }
    22             else if (s[cur] == ' ') space = true;
    23             else if (s[cur] == '+' || s[cur] == '-') {
    24                 if (space || (cur > 0 && s[cur-1] != 'e')) return false;
    25             }
    26             else return false;
    27             cur++;
    28         }
    29         if (!first) return false;
    30         if (e && !second) return false;
    31         return true;
    32     }
    33 }
    View Code
  • 相关阅读:
    Hibernate映射
    hibernate 大对象类型的hibernate映射
    Hibernate映射文件详解(News***.hbm.xml)二
    Hibernate映射文件详解(News***.hbm.xml)一
    hibernate的速度问题--hibernate.jdbc.fetch_size和 hibernate.jdbc.batch_size
    EF使用EntityTypeConfiguration配置映射关系
    数据对象的映射关系
    SQL SERVER索引
    WCF(三)相关技术的学习
    WCF(二) endpoint
  • 原文地址:https://www.cnblogs.com/yingzhongwen/p/3035343.html
Copyright © 2011-2022 走看看