关于珠海网站建设的优势,网站建设公司的成本有哪些方面,wordpress七牛云存储,网站文字编辑怎么做一、题目描述 请你来实现一个 myAtoi(string s) 函数#xff0c;使其能将字符串转换成一个 32 位有符号整数
算法如下#xff1a; 读入字符串并丢弃无用的前导空格 检查下一个字符#xff08;假设还未到字符末尾#xff09;为正还是负号#xff0c;读取该字符#xff…一、题目描述 请你来实现一个 myAtoi(string s) 函数使其能将字符串转换成一个 32 位有符号整数
算法如下 读入字符串并丢弃无用的前导空格 检查下一个字符假设还未到字符末尾为正还是负号读取该字符如果有。 确定最终结果是负数还是正数。 如果两者都不存在则假定结果为正。 读入下一个字符直到到达下一个非数字字符或到达输入的结尾。字符串的其余部分将被忽略。 将前面步骤读入的这些数字转换为整数即123 - 123 0032 - 32。如果没有读入数字则整数为 0 。必要时更改符号从步骤 2 开始。 如果整数数超过 32 位有符号整数范围 [−231, 231 − 1] 需要截断这个整数使其保持在这个范围内。具体来说小于 −231 的整数应该被固定为 −231 大于 231 − 1 的整数应该被固定为 231 − 1 。 返回整数作为最终结果。 实例 输入s -42 输出-42 解释 第 1 步 -42读入前导空格但忽视掉 ^ 第 2 步 -42读入 - 字符所以结果应该是负数 ^ 第 3 步 -42读入 42 ^ 解析得到整数 -42 。 由于 -42 在范围 [-231, 231 - 1] 内最终结果为 -42 。 二、思路 简单来说就是要匹配字符串中的数字有的带符号根据上述的实例我们可以先将前导空格去除这里可以用trim()方法实现然后用match()方法建立合适的正则匹配规则匹配出答案最后判断该整数是否越界根据规则进行输出返回即可
该题正则匹配规则 1. 在上述实例中整数以或-开头如果是号可能会不出现所以符号部分的正则匹配是/^[ - | ]{ 0, 1 }/ 2. 该整数数字部分可以是多位数字所以它的正则匹配是/ [ 0-9 ] / 综上所述两者合在一起便是/ ^[ -| ]{ 0, 1 }[ 0-9 ]/ 三、代码展示
var myAtoi function(str) {//利用正则匹配let s str.trim().match(/^[-|]{0,1}[0-9]/)// 范围判断if(s ! null) {if(s[0] Math.pow(2, 31)-1) {return Math.pow(2, 31) - 1} else if (s[0] Math.pow(-2, 31)) {return Math.pow(-2, 31)}return s[0]}return 0;
};
四、知识回顾
1、关于正则表达式的概念
表达式描述[0-9]查找任何从 0 至 9 的数字。(1|2|3|4)查找任何指定的选项。
量词描述n 匹配任何包含至少一个 n 的字符串。 2、关于js String对象的match方法
方法 描述 match()查找找到一个或多个正则表达式的匹配注意match()方法返回的值是一个数组也就是说他会自动匹配左右符合条件的元素组成一个数组