# 表示数值的字符串

# 1、题目

请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。 例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。

# 2、思路

考虑完全所有情况

  • 1.只能出现数字、符号位、小数点、指数位
  • 2.小数点,指数符号只能出现一次、且不能出现在开头结尾
  • 3.指数位出现后,小数点不允许在出现
  • 4.符号位只能出现在开头和指数位后面

# 3、代码

function isNumeric(s) {
  if (s == undefined) {
    return false;
  }
  let hasPoint = false;
  let hasExp = false;
  for (let i = 0; i < s.length; i++) {
    const target = s[i];
    if (target >= 0 && target <= 9) {
      continue;
    } else if (target === 'e' || target === 'E') {
      if (hasExp || i === 0 || i === s.length - 1) {
        return false;
      } else {
        hasExp = true;
        continue;
      }
    } else if (target === '.') {
      if (hasPoint || hasExp || i === 0 || i === s.length - 1) {
        return false;
      } else {
        hasPoint = true;
        continue;
      }
    } else if (target === '-' || target === '+') {
      if (i === 0 || s[i - 1] === 'e' || s[i - 1] === 'E') {
        continue;
      } else {
        return false;
      }
    } else {
      return false;
    }
  }
  return true;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36

# 考察点

  • 字符串
  • 考虑问题的全面性
  • 程序的完整性
上次更新: 1/5/2022, 9:25:14 AM