题目链接

NowCoder

题目描述

将一个字符串转换成一个整数,字符串不是一个合法的数值则返回 0,要求不能使用字符串转换整数的库函数。

  1. Iuput:
  2. +2147483647
  3. 1a33
  4. Output:
  5. 2147483647
  6. 0

解题思路

  1. public int StrToInt(String str) {
  2. if (str == null || str.length() == 0)
  3. return 0;
  4. boolean isNegative = str.charAt(0) == '-';
  5. int ret = 0;
  6. for (int i = 0; i < str.length(); i++) {
  7. char c = str.charAt(i);
  8. if (i == 0 && (c == '+' || c == '-')) /* 符号判定 */
  9. continue;
  10. if (c < '0' || c > '9') /* 非法输入 */
  11. return 0;
  12. ret = ret * 10 + (c - '0');
  13. }
  14. return isNegative ? -ret : ret;
  15. }