Leetcode Day3
发布日期:2021-05-04 19:51:11 浏览次数:22 分类:原创文章

本文共 2823 字,大约阅读时间需要 9 分钟。

Leetcode Day3

leetcode -7 整數反轉

  • 題目描述

给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。

如果反转后整数超过 32 位的有符号整数的范围 [−2^31, 2^31 − 1] ,就返回 0。

假设环境不允许存储 64 位整数(有符号或无符号)。

  • 解 :
/** * @param {number} x * @return {number} */let reverse = function(x) {       if(x == 0)        return 0;    let s = x.toString();    let res = "";    let flag = true;    for(let i=s.length-1; i>=0; i--) {           if(s.charAt(i) == 0 && flag)            continue;        else {               flag = false;            res += s.charAt(i);        }    }    let ans = parseInt(res);    if(ans > Math.pow(2, 31)-1 || -ans < -Math.pow(2, 31))        return 0;    if(x < 0)        return -ans;    return ans;}

leetcode -8 字符串轉換整數

  • 題目描述

请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数)。

函数 myAtoi(string s) 的算法如下:

  • 读入字符串并丢弃无用的前导空格
  • 检查下一个字符(假设还未到字符末尾)为正还是负号,读取该字符(如果有)。 确定最终结果是负数还是正数。 如果两者都不存在,则假定结果为正。
  • 读入下一个字符,直到到达下一个非数字字符或到达输入的结尾。字符串的其余部分将被忽略。
  • 将前面步骤读入的这些数字转换为整数(即,“123” -> 123, “0032” -> 32)。如果没有读入数字,则整数为 0 。必要时更改符号(从步骤 2 开始)。
  • 如果整数数超过 32 位有符号整数范围 [−2^31, 2^31 − 1] ,需要截断这个整数,使其保持在这个范围内。具体来说,小于 −2^31 的整数应该被固定为 −2^31 ,大于 2^31 − 1 的整数应该被固定为 2^31 − 1 。
  • 返回整数作为最终结果。

注意

本题中的空白字符只包括空格字符 ’ ’ 。

除前导空格或数字后的其余字符串外,请勿忽略 任何其他字符。

  • 解 :
/** * @param {string} s * @return {number} */let myAtoi = function(s) {       let positive = true;    let res = 0;    let arr = [];    let findFirstValid = function(str) {           for(let i=0; i<str.length; i++) {               if(str.charAt(i) == ' ')                continue;            else                return i;        }    }    let findFirstNumber = function(str) {           for(let i=0; i<str.length; i++) {               if(48 <= str.charAt(i).charCodeAt() && str.charAt(i).charCodeAt() <= 57)                return i;        }    }    let firstNumber = findFirstNumber(s);    if(s.charAt(firstNumber-1) == '-')        positive = false;    let start = findFirstValid(s);    for(let i=start; i<s.length; i++) {           if(48 <= s.charAt(i).charCodeAt() && s.charAt(i).charCodeAt() <= 57) {               arr.push(parseInt(s.charAt(i)));        }        else if((s.charAt(i) == '-' && s.charAt(i+1) == '+') || (s.charAt(i) == '+' && s.charAt(i+1) == '-') || (s.charAt(i) == '-' && s.charAt(i+1) == '-') || (s.charAt(i) == '+' && s.charAt(i+1) == '+') && i<firstNumber) {               break;        }        else if((s.charAt(i) == '-' || s.charAt(i) == '+') && i<firstNumber) {               continue;        }        else {               break;        }    }    if(arr == [])        return 0;    for(let i=0; i<arr.length; i++) {           res += Math.pow(10, arr.length-1-i)*arr[i];    }    if(!positive)        res = -res;     if(res > Math.pow(2, 31)-1 || res < Math.pow(-2, 31)) {           if(positive)            return Math.pow(2, 31)-1;        else            return Math.pow(-2, 31);    }    return res;}
上一篇:Leetcode Day4
下一篇:Leetcode Day2

发表评论

最新留言

表示我来过!
[***.240.166.169]2025年04月01日 23时41分08秒