Leetcode P65 Java一次遍历
执行用时:1 ms, 在所有 Java 提交中击败了100.00%的用户
内存消耗:41.2 MB, 在所有 Java 提交中击败了87.58%的用户
通过测试用例:1490 / 1490
idea
首先我们先建立一些布尔型变量用来记录我们的关键字的出现,
int n = s.length();
boolean dotcheck = false; //小数点检测
boolean echeck = false; //E检测
boolean numbercheck = false; //数字检测
如果当前下标出现的元素是数字,那么就记录下元素已经出现,如果当前下标出现的是E或者e那么就必须保证当前元素不能在最后一位,并且保证e只能出现一次,还要确保已经有出现的数字,因为不能单纯一个e\E,小数点要保证之前没有出现过小数点,±保证自己不在最后以为还有他的前一位不能为=或者-
for (int i = 0; i < n; i++) {
char c = s.charAt(i);
//数字判断 数字可以在任意位置
if (c <= '9' && c >= '0'){
numbercheck = true;
}
//E判断
else if (c == 'e' || c == 'E') {
if (i == n-1 || echeck || !numbercheck){
return false;
}
echeck = true;
}
//小数点计算
else if (c == '.'){
if (dotcheck || echeck){
return false;
}
dotcheck=true;
}
//运算符
else if (c == '-' || c== '+'){
if (i == n-1 || (i != 0 && s.charAt(i-1) !='e' && i != 0 && s.charAt(i-1)!='E')){
return false;
}
}
//其他情况比如 G76,因为题目说了可能是任意字母
else{
return false;
}
}
接下来判断是否有出现过数字,如果有就返回true,否则就false
//判断下是否拥有数字
return numbercheck;
code
public boolean isNumber(String s) {
int n = s.length();
boolean dotcheck = false; //小数点检测
boolean echeck = false; //E检测
boolean numbercheck = false; //数字检测
for (int i = 0; i < n; i++) {
char c = s.charAt(i);
//数字判断 数字可以在任意位置
if (c <= '9' && c >= '0'){
numbercheck = true;
}
//E判断
else if (c == 'e' || c == 'E') {
if (i == n-1 || echeck || !numbercheck){
return false;
}
echeck = true;
}
//小数点计算
else if (c == '.'){
if (dotcheck || echeck){
return false;
}
dotcheck=true;
}
//运算符
else if (c == '-' || c== '+'){
if (i == n-1 || (i != 0 && s.charAt(i-1) !='e' && i != 0 && s.charAt(i-1)!='E')){
return false;
}
}
//其他情况比如 G76,因为题目说了可能是任意字母
else{
return false;
}
}
//判断下是否拥有数字
return numbercheck;
}