劍指 Offer 20.表示數值的字串
阿新 • • 發佈:2021-02-05
劍指 Offer 20.表示數值的字串
記住一套規則!
1、. 判定規則,沒有出現過, 且必須出現在e的前面
2、e判定規則,沒有出現過e 且必須出現過數字,而且e後面必須跟數字
3、 +/- 判定規則,只能出現在第一位或者在e後面
class Solution {
public boolean isNumber(String s) {
char[] nums = s.trim().toCharArray();
boolean numFlag = false; //代表數字是否出現過
boolean dotFlag = false; //代表小數是否出現過
boolean eFlag = false; //代表e或者E是否出現過
for(int i = 0; i < nums.length; i++) {
if(nums[i] >= '0' && nums[i] <= '9') {
numFlag = true;
}
else if(nums[i] == '.' && !dotFlag && !eFlag) { //小數點沒有出現過,而且要在e之前
dotFlag = true;
}
else if((nums[i] == 'e' || nums[i] == 'E') && !eFlag && numFlag) { //e判定規則,沒有出現過e 且必須出現過數字
eFlag = true;
numFlag = false; //e後面必須要跟數字,否則為false
}
else if((nums[i] == '+' || nums[i] == '-') && (i == 0 || nums[i - 1] == 'e' || nums[i - 1] == 'E')) { }
else return false;
}
return numFlag;
}
}
時間複雜度 O(n)
空間複雜度 O(n)