zoukankan      html  css  js  c++  java
  • 剑指offer系列27--表示数值的字符串

    【题目】请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。

      例如,字符串”+100”,”5e2”,”-123”,”3.1416”和”-1E-16”都表示数值。 但是”12e”,”1a3.14”,”1.2.3”,”+-5”和”12e+4.3”都不是。

     1 package com.exe6.offer;
     2 /**【题目】
     3  * 请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。
     4  * 例如,字符串”+100”,”5e2”,”-123”,”3.1416”和”-1E-16”都表示数值。
     5  *  但是”12e”,”1a3.14”,”1.2.3”,”+-5”和”12e+4.3”都不是。
     6  * @author WGS
     7  *
     8  */
     9 public class IsString {
    10     int index=0;
    11     public boolean isString(char[] str){
    12         if(str==null || str.length<=0) return false;
    13         
    14         int len=str.length;
    15         
    16         //0 去除首尾空格
    17         while(str[index]==' ')
    18             index++;
    19         if(index>=len) return false;
    20         while(str[len-1]==' ')
    21             len--;
    22         if(len<=0) return false;
    23         
    24         //1 判断是否正负号
    25         if(str[index]=='+' || str[index]=='-')
    26             index++;
    27         if(index>=len) return false;
    28         //2 判断正负号后的整数 是整数就直接跳过,不是在整数则跳到下一步;
    29         scanDigits(str,index);
    30         if(index==len) return true;
    31         int index2=0;
    32         
    33         //3 判断小数点后是否满足
    34         if(str[index]=='.'){
    35             index++;
    36             if(index==len) return true;
    37             index2 = index;
    38             scanDigits(str,index);
    39             
    40             if(index==index2) return false;//说明index没变,.后数不满足整数条件
    41             if(index==len) return true;
    42         }
    43         //4 判断科学计数法
    44         if(str[index]=='e'||str[index]=='E'){
    45             index++;
    46             if(index==len) 
    47                 return false;        
    48             if(str[index]=='+' || str[index]=='-')
    49                 index++;
    50             index2=index;
    51             scanDigits(str,index);
    52             if(index==index2) return false;//说明index没变,.后数不满足整数条件
    53             if(index==len) return true;
    54         }
    55         
    56         return false;
    57         
    58     }
    59     private void scanDigits(char[] str, int i) {
    60         while(i<str.length &&str[i]<='9' && str[i]>='0'){
    61             i++;
    62             index++;
    63         }        
    64     }
    65 
    66     public static void main(String[] args) {
    67             String s = "24.44";
    68             boolean b = new IsString().isString(s.toCharArray());
    69             System.out.println(b);
    70     }
    71 
    72 }
  • 相关阅读:
    【校招面试 之 C/C++】第1题 为什么优先使用构造函数的初始化列表
    Linux平台ORACLE INSTANT客户端安装
    ORACLE数据库链接
    ORACLE用户管理
    【转】软件开发工具介绍之 6.Web开发工具
    【转】三大UML建模工具Visio、Rational Rose、PowerDesign的区别
    ORACLE数据库查看执行计划
    数据分析方法
    ORACLE对象大小写问题
    计算机改名引发的ORA
  • 原文地址:https://www.cnblogs.com/noaman/p/5547895.html
Copyright © 2011-2022 走看看