BluePen BluePen
  • Jenkins
  • OS
  • 算法
随笔
分类
标签
归档
关于
留言板
GitHub (opens new window)

Alex

一个好人
  • Jenkins
  • OS
  • 算法
随笔
分类
标签
归档
关于
留言板
GitHub (opens new window)
  • leetcode

    • 哈希

    • 字符串操作

    • 数字操作

      • 回文数
      • 字符串转数字(atoi)
        • 题目描述
        • 解法
        • 总结
      • 整数反转
    • 双指针

    • 递归

    • 链表

    • 动态规划

    • 二分法

  • interview

  • well_known_algo

  • algo
  • leetcode
  • 数字操作
Alex
2019-08-03
目录

字符串转数字(atoi)

-> 题目描述

String to Integer (atoi)

实现函数 atoi的功能,即将字符串转换为数字。
要求如下:

  • 去除字符串前面的空白字符(只考虑空格字符)
  • 保留前面的±符号
  • 字符串后缀包含非数字字符则丢弃
  • 如果是不含有任何数字的字符串或起始部分第一个非空白字符不为数字或 ±符合,则返回 0
  • 只考虑数字为 32位有符号的数字,超过范围则返回边界值

示例1:

Input: "42"
Output: 42
1
2

示例2:

Input: "      -42"
Output: 42
1
2

示例3:

Input: "4193 with words"
Output: 4193
1
2

示例4:

Input: "words and 987"
Output: 0
Explanation: 因为第一个非空白字符不为数字或正负符号,故返回0
1
2
3

示例5:

Input: "-91283472332"
Output: -2147483648
Explanation: 超过左边界,故返回 -2^31
1
2
3

javascript:

/**
 * @param {string} str
 * @return {number}
 */
var myAtoi = function(str) {
    
};
1
2
3
4
5
6
7

From leetcode No.8 Medium (opens new window)

-> 解法

点击查看
/**
 * @param {string} str
 * @return {number}
 */
var myAtoi = function(str) {
    let s = str.trim()
    if(s.length ===0)
        return 0
    let flag = ''
    const ret = []
    if(s[0]==='-' || s[0] === '+'){
        flag = s[0]
    }
    if(flag !== '')
        s = s.substring(1)
    for(let i=0; i<=s.length-1;i++){
        const num = parseInt(s[i])
        if(isNaN(num))
           break;
        ret.push(num)
    }
    if(!ret.length)
        return 0
    s = flag + ret.join('') 
    return Math.max(-Math.pow(2,31), Math.min(Math.pow(2, 31) - 1, parseInt(s)))
};
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

-> 总结

需要考虑的点以及在条件中都列举了

  • 去空格
  • 考虑有无正负符号
  • 取数字
  • 注意大小范围
编辑此页 (opens new window)
更新于: 2019-08-03 10:02
回文数
整数反转

← 回文数 整数反转→

Copyright © 2019-2022 | yxxy | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式