题目描述
请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。
其实我很讨厌做这种题目,因为要分析很多种情况,而人又是懒得思考的动物,所以对待这种题目尤为讨厌,思考的具体过程如下:
第一个数字可以是+-和数组
只能包含+- 数字 e .这类的字符 并且e和.只能包含一次
E的后面只能为整数,前面可以为小数
.的前后都只能为整数
+001应该不算整数
首先判断是否包含.和e
1.如果同时包含 则返回false
2.如果仅含有.,.的前后都只能为整数,并且只能包含1个.
3.如果仅含有e,E的后面只能为整数,前面可以为小数,并且只能包含一个e
4.如果都不包含,则全体数字应该为整数才对
判断整数:
1.第一个字符可以是+- 1-9的数组,否则返回false
2.后面的字符必须是0-9之间的数字,否则返回fasle
判断小数:
1.首先判断是否包含.,如果不办好,使用上述逻辑即可
2.如果包含,大于1个则返回fasle
3.等于1个,则应该判断小数前后的样子,.之前应该使用上述相同的逻辑,.之后应该使用另外一段逻辑
这种题目套路太多了,最讨厌做这种题目了。
public class Solution {
public static int countC(char[] str, char c, int s, int e){
int count = 0;
int index = -1;
for(int i=s; i<= e;i++){
if(c=='e'){
if(str[i] == 'e'||str[i] == 'E'){
count++;
index = index*i;
}
}else{
if(str[i] == c){
count++;
index = index*i;
}
}
}
if(count == 0)
return count;
if(count > 1)
return count;
else
return index;
}
public static boolean isZhengShu(char[] str, int start, int end){
if(end < start)return false;
for(int i=start; i<= end; i++){
if(i==start){
if(str[i] == '+' || str[i] == '-' || (str[i] <= '9'&&str[i] >= '1'))



京公网安备 11010502036488号