剑指offer-表示数值的字符串
Posted moonbeautiful
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指offer-表示数值的字符串相关的知识,希望对你有一定的参考价值。
题目描述
请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。
题目链接:
分析:
考虑到全部情况即可。
1、 +-号的两个位置、
2、 . 只能出现一次,且位置一定在e之前。
3、 e后面要有数值
public class Solution { public boolean isNumeric(char[] str) { //记录e的位置 int epos = -1; //记录.的位置 int ppos = -1; for(int i =0;i<str.length;i++){ //+-号只能出现的位置在0或者e+1的位置 if(i==epos+1&&(str[i]==‘+‘||str[i]==‘-‘)){ }else if(str[i]>=‘0‘&&str[i]<=‘9‘){ }else if(str[i] == ‘.‘ && ppos == -1){ //. 只能出现一次。所以 ppos == -1 ppos = i; //不能出现在e的后面 if(epos == -1){ }else{ return false; } }else if(str[i] == ‘e‘ || str[i] == ‘E‘){ epos = i; //e后面必须有数值 if(i+1 != str.length){ }else{ return false; } }else{ return false; } } return true; } }
以上是关于剑指offer-表示数值的字符串的主要内容,如果未能解决你的问题,请参考以下文章