题目链接:https://leetcode.com/problems/valid-number/
在这里我偷了个懒,并没有写那么多判断语句,
而是直接利用正则表达式解决,速度没有直接if else
那么快,但是看起来比较简洁。
注意:
在其他语言中,\\ 表示:我想要在正则表达式中插入一个普通的(字面上的)反斜杠,请不要给它任何特殊的意义。
在 Java 中,\\ 表示:我要插入一个正则表达式的反斜线,所以其后的字符具有特殊的意义。
所以,在其他的语言中(如Perl),一个反斜杠 \ 就足以具有转义的作用,而在 Java 中正则表达式中则需要有两个反斜杠才能被解析为其他语言中的转义作用。也可以简单的理解在 Java 的正则表达式中,两个 \\ 代表其他语言中的一个 \,这也就是为什么表示一位数字的正则表达式是\\d,而表示一个普通的反斜杠是 \\\\。
AC 42ms Java:
class Solution {
public boolean isNumber(String s) {
String regex="[+-]?((\\d+\\.?)|(\\.?\\d+))\\d*(e[+-]?\\d+)?";
return s.trim().matches(regex);
}
}
正则表达式不太熟练的同学:传送门。