[Leetcode]-- Valid Number

 2023-09-13 阅读 27 评论 0

摘要:package validNumber;public class Solution {public boolean isNumber(String s) {if (s == null)return false;char[] sArr = s.trim().toCharArray();if (sArr.length == 0)return false;// if string 长度为1 且不是数字if (sArr.length ==
package validNumber;public class Solution {public boolean isNumber(String s) {if (s == null)return false;char[] sArr = s.trim().toCharArray();if (sArr.length == 0)return false;// if string 长度为1 且不是数字if (sArr.length == 1 && !Character.isDigit(sArr[0]))return false;boolean decimalFound = false; // flag 标记是否遇到过 '.'boolean eFound = false; // flag 标记是否遇到过 'e'// 遍历string的每一个characterint end = sArr.length - 1;for (int i = 0; i <= end; i++) {// 当前character 一前一后两个指针。 指针超出设为'x'char nextChar = (i >= end ? 'x' : sArr[i + 1]);char prevChar = (i <= 0 ? 'x' : sArr[i - 1]);switch (sArr[i]) {// '+' and '—' 只可以放在数字最左边或是 'e'的右边case '+':case '-':// 不在'e' 的右边和开头if (prevChar != 'e' && i != 0)return false;// 在末尾if (i == end)return false;// 早开头 但是next 不是 '.' 也不是数if (i == 0 && nextChar != '.' && (!Character.isDigit(nextChar)) )return false;break;case '.':// 出现过'.' or 'e' 就不能出现'.' 了if (decimalFound || eFound)return false;// '.' 前面不是数且后面不是数if (!Character.isDigit(prevChar)&& !Character.isDigit(nextChar))return false;decimalFound = true;break;case 'e':// 'e' 出现过就不能再出现了if (eFound)return false;// 'e' 之前又不是数字又不是'.'if (!Character.isDigit(prevChar) && prevChar != '.')return false;// 'e' 之后不是数也不是'+' or '-' return false;if (!Character.isDigit(nextChar)&& (nextChar != '-' && nextChar != '+')) {return false;}// 'e' 在开头和结尾if (end == i || i == 0)return false;eFound = true;break;// 遇到空格case ' ':return false;// 其它情况 不是数 return falsedefault:if (!Character.isDigit(sArr[i]))return false;}}return true;}
}

思路 讲String检测所有 false的cases, 如果全通过 return true

转载于:https://www.cnblogs.com/RazerLu/p/3534768.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/1/52478.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息