zoukankan      html  css  js  c++  java
  • 剑指Offer(Java版)第五十九题:请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。 例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。

    /*
    请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。
    例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。
    但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。
    */
    //一开始不知道这是什么意思,后来查了资料才知道是找规律的问题:
    //逐个字符进行判断,e或E、小数点或符号最多出现一次,而e或E的前一个必须是数字,且不能是第一个或最后一个字符,符号的前一个字符不能是e或E。
    public class Class59 {

    public boolean isNumeric(char[] str) {
    if(str == null || str.length <= 0){
    return false;
    }
    int symbol = 0; //'+'和'-'
    int eOrE = 0; //'e'和'E'
    int point = 0; //'.'
    if(str[0] == '-' || str[0] == '+'){
    symbol++;
    }
    for(int i = symbol; i < str.length; i++){
    if(str[i] == '-' || str[i] == '+'){
    if(str[i - 1] != 'e' && str[i - 1] != 'E'){
    return false;
    }
    continue;
    }
    if(str[i] == 'e' || str[i] == 'E'){
    eOrE++;
    if(eOrE > 1){
    return false;
    }
    if(i == 0 || str[i - 1] < 48 || str[i - 1] > 57 || i == str.length){
    return false;
    }
    point++;
    continue;
    }
    if(str[i] == '.'){
    point++; //除了数字、符号和'e'以及'E'之外,只剩下'.'了。
    if(point > 1){
    return false;
    }
    continue;
    }
    if((str[i] < 48 || str[i] > 57) && (str[i] != 'e') && (str[i] != 'E')){
    return false;
    }
    if(str[str.length - 1] == 'e' || str[str.length - 1] == 'E'){
    return false;
    }
    }
    return true;
    }

    public static void main(String[] args) {
    // TODO Auto-generated method stub

    }

    }

  • 相关阅读:
    Haproxy图解
    Keeplived 配制图解
    日志文件 的管理 logrotate 配置
    Haproxy+MYSQL 负载均衡 原创
    MySQL内存----使用说明全局缓存+线程缓存) 转
    MYSQL内存--------启动mysql缓存机制,实现命中率100% 转
    MYSQL SQL 审核工具 (inception安装步骤)
    MHA手动切换 原创4 (非交互式切换)
    MHA手动切换 原创2 (主参与复制)
    MHA手动在线切换主 原创3(主不参与复制)
  • 原文地址:https://www.cnblogs.com/zhuozige/p/12546857.html
Copyright © 2011-2022 走看看