范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

算法(附思维导图全部解法)300题之(8)字符串转换整数(atoi)

  零 标题:算法(leetode,附思维导图 + 全部解法)300题之(8)字符串转换整数 (atoi)
  导读:
  我的解法很多 且 很 sao,你忍一下~
  一 题目描述
  题目描述
  题目描述
  题目描述
  题目描述
  二 解法总览(思维导图)
  思维导图
  三 全部解法1 方案1
  1)代码: // 方案1  var myAtoi = function(s) {     const l = s.length,         numStrArr = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"];          let index = 0,         // 正、负 情况         sign = undefined,         // 结果字符串         resStr = "";      // 1)不断去掉前面的 空格字符     while (index < l && s[index] === " ") {         index++;     }          // 2)去完前面的空格字符后,后面的第一个字符必须是 "+"、"-" 或 数值字符     // 不是的话直接返回 0      if (index < l) {         if (s[index] === "-" || s[index] === "+" ) {             sign = s[index];             resStr += sign;         } else {             if (numStrArr.includes(s[index])) {                 resStr += s[index];             } else {                 return 0;             }         }     }      // 3)+、- 号确定后,不断往后读取数值字符(若是遇到 非数值字符 就没必要往下读了) 并 不断存入resStr     index += 1;     while (index < l && numStrArr.includes(s[index])) {         resStr += s[index];         index++;     }      let resValue = parseInt(resStr);     // 边界1:"+-12" (核心:只有 +、- 字符等,此时 parseInt(resStr) 为 NaN,即Not A Number)     resValue = Number.isNaN(resValue) ? 0 : resValue;     // 边界2:范围的上下界处理     resValue = resValue < Math.pow(-2, 31) ? Math.pow(-2, 31) : resValue;     resValue = resValue > Math.pow(2, 31) - 1 ? Math.pow(2, 31) - 1 : resValue;      // 4)返回最终的结果     return resValue; } 2 方案2
  1)代码: // 方案2 方案1的"优化版",其实没必要进行 去前面空格字符 等操作,直接使用 JS自带的 parseInt() var myAtoi = function(str) {     // 1)直接使用 parseInt() ,其帮我们少了不少"前置处理工作"     let resValue = parseInt(str);      // 2)边界处理     // 边界1:"+-12" (核心:只有 +、- 字符等,此时 parseInt(resStr) 为 NaN,即Not A Number)     if (isNaN(resValue)) {         return 0;     } else {         // 边界2:范围的上下界处理         resValue = resValue < Math.pow(-2, 31) ? Math.pow(-2, 31) : resValue;         resValue = resValue > Math.pow(2, 31) - 1 ? Math.pow(2, 31) - 1 : resValue;     }      // 3)返回最终的结果     return resValue; }; 3 方案3
  1)代码: // 方案3 状态机 var myAtoi = function(str) {     // 根据当前 字符char,获取要变更为哪个 状态state     const getStateIndex = char => {         const numStrArr = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"];         // 初始化流转值为 "end" 状态,其实也可以有别的写法         let resStateIndex = 3;          if (char === " ") {             resStateIndex = 0;         } else if (char === "+" || char === "-") {             resStateIndex = 1;         } else if (numStrArr.includes(char)){             resStateIndex = 2;         }          return resStateIndex;     };      // 1)初始化各种值等,特别是 tableMap 的定义!!     const l = str.length,         // 状态机的表格形式         tableMap = {             "start": ["start", "signed", "in_number", "end"],             "signed": ["end", "end", "in_number", "end"],             "in_number": ["end", "end", "in_number", "end"],             "end": ["end", "end", "end", "end"],         };      // state:当前的状态state值     let state = "start",         sign = 1,         index = 0,         resValue = 0;      // 2)不断向后遍历 字符串str ,根据当前遍历到的字符char去不断更新 state、resValue、sign 等值,     // 当 index >=l || state === "end" 时,退出遍历     while (index < l) {         const char = str[index];         state = tableMap[state][getStateIndex(char)];         if (state == "in_number") {             resValue = resValue * 10 + parseInt(char);         } else if (state === "signed") {             // 因为 sign 初始化为 1,所以为 "-" 时才有必要处理             if (char === "-") {                 sign = -1;             }         }                  index++;         // 优化:当前state为"end",就可以退出、不用再遍历         if (state === "end") {             break;         }     }          // 3)恢复符号     resValue *= sign;      // 4)边界处理     // 边界1:范围的上下界处理     resValue = resValue < Math.pow(-2, 31) ? Math.pow(-2, 31) : resValue;     resValue = resValue > Math.pow(2, 31) - 1 ? Math.pow(2, 31) - 1 : resValue;      // 5)返回结果     return resValue; }

客如云品牌全面升级,喊你6月29日来参会本地生活SaaS行业领军企业客如云,与中国连锁经营协会(CCFA),将于6月29日在上海举办首届中国服务业连锁品牌发展峰会暨开放平台大会(以下简称开放平台大会)。客如云也将在大会上中国移动新机明日发布3大关键字为你全面解读NZONE今天(6月21日),中国移动手机俱乐部发布了一条微博,显示中国移动将在明天正式发布全新终端品牌NZONE和NZONES7系列5G手机,也许有些小伙伴有点蒙圈,一个通信运营商家怎么突荣耀Magic3系列多主摄融合技术发布,影像能力再跃级冲顶高端市场作为全能科技旗舰,荣耀Magic3系列凭借非凡科技实力,为智能手机行业带来诸多创新思路,自2021年8月12日发布便一直备受业界关注。今天,2021年9月22日,荣耀Magic3系超全的单手截图攻略,全平台的截图工具都在这里平常大家都喜欢用QQ微信在PC上截图,今天给大家分享所有平台超好用的截图工具,方便大家在任何场景使用每个平台最多3款,最少1款选自己喜欢的就好。对了,iOS和安卓只推荐长截图软件,得胜TS451MUSB数字语音耳机纯净底噪剪辑利器虽然现在手机逐渐成为主流,不过对于很多行业用户来说,很多时候还是需要依靠电脑完成各项工作,比如我就是一个重度电脑用户。在剪片子的时候需要对音频做出调整,用音箱的话太容易听到噪音,蓝字丑也许是滚珠不够圆滑,派通中性笔BLN105体验智能数码产品已经走进千家万户,很多传统的生活用具逐渐被智能产品取代。不过有一样东西那是永远无法代替的,那就是从我们没有开始进入校园就已经练习使用的笔。其实办公室一族的包包里总能翻出企业办公小能手蒲公英X3路由器今天给大家介绍一款路由器产品蒲公英X3路由器。这款路由器零售价200元左右,价格偏向大众水平,4口百兆网口,带有无线功能,足以满足各种家庭网络需求。拥有强大的组网和NAS功能,对企浙江这家旧书店不一般!老板竟然靠着一张纸把生意做活了王老板的旧书店开在杭州大学城的某个大学旁边。其实,王老板的生意总的来说还是比同行们好做,因为有着毗邻高等学府的优势,王老板可以收购到大量学生们出售的二手图书,许多学生也会来店里这里不是富婆也能蔡依林式网购?小米有品这11天简直像在撒钱临近双十一,关于网购的话题热度也越来越高,像是最近网购的上限就登上了各大媒体平台的热搜。对于不方便常常逛街的明星来说,网购也是她们最喜爱的买买买方式,但是蔡依林女士的网购壕语,却着千忙之中来吐槽,曾经一代神机可能是我用过最短命的手机最近置换了一台手机,使用起来让我特么难受。对于各家手机的特色我是没有什么特别不满意的,没想到这部曾经是一代传奇的经典品牌,今天使得我千忙之中抽空来吐个槽,我对它的评价就是可能是我用新iPhone就发布了这几款产品,廉价版不廉价新iPhone就发布了这几款产品,但是廉价版并不廉价。苹果今天凌晨发布了三款手机iPhoneXsiPhoneXsMaxiPhoneXr,分别是5。8英寸OLED屏6。5英寸OLED
对不起,短视频不是数字音乐的未来即使没了微博热搜,也丝毫不影响周董新歌mojito击破各个圈层引爆关注。6月12日零点,mojito准时在腾讯音乐娱乐集团旗下的QQ音乐酷狗音乐酷我音乐等上线售卖,一经上线平台便纷ikbc机械键盘狐樱,粉色键盘红轴加持,爱了在笔记本盛行的今天,轻薄本越来越吃香,而作为笔记本来讲,没有小键盘,亦或者在进行数字输入的时候就会效率提不上来,种种诟病。作为数码爱好者亦或者上班办公,不论是使用wps还是使用网页孤尽和键盘侠一则莫须有的指控,让开课吧以及开课吧新任CTO孤尽陷入了一场争议中。几天前,一则关于开课吧CTO孤尽职级造假的新闻在脉脉上不胫而走。有网友在脉脉上发布了关于孤尽职级造假的情况,称他百城万里驭鉴实力!坦克300弄潮之旅探境中原大地10月26日,弄潮之旅第一季之坦克300百城万里接力行从合肥整装再出发,经亳州向中原核心城市郑州壮游挺进。此次活动紧贴坦克300硬派潮品产品特性,全国地区主流媒体化身潮玩品鉴官,与咕咚运动舒缓拖鞋,触摸脚底的顺滑拖鞋大家都穿过,有棉拖,凉拖,皮拖,种类繁多,眼花缭乱。不论是工作一天回到家还是跑步运动之后穿拖鞋更换衣物,总会让拖鞋伴你左右。而对于拖鞋的重新认识要从咕咚运动舒缓拖鞋开始讲起,原小ck母亲节专属优惠包包鞋子墨镜全五折CK香港官网大降价啦!鞋包低至5折!5折!5折!不光是包包,还有鞋子眼镜等买满2件以上额外享受9折的优惠夏天马上来啦装备要全套才配得上完美美靯眼镜篇包包篇夏季来临之季也是换包之季宝国潮运动鞋,平价好看还百搭,简直国货之光最近HM事件想必大家都知道了,很多网友表示一觉起来竟发现没有鞋子可穿了。今天小宝打算狠狠来一集国货种草,推荐一波平价好看还百搭,并具有潮牌灵魂的国潮鞋。01hr李宁烛龙经典休闲鞋李又被蔻驰新包种草了!6款大热的包款,每个都超好看海南免税店首届手袋节,到底是什么宝藏节日啊!不仅各品牌包包最高享6倍积分,各当红新品也集结在这,真的是囤包狂魔的福利!阿宝在这个宝藏节日里,发现好多蔻驰大热的新款包包,每个都超级无百元西圣蓝牙耳机,市场竞争激烈角逐由此开始自从有线耳机慢慢被无线蓝牙耳机逐渐替代的时候,蓝牙耳机的攻势已经箭在弦上,因此对于目前市场上的蓝牙耳机的甄别和选择显得尤为重要。单从价格角度以及外观设计以及音效等方面考虑,不求完美咕咚10K运动跑鞋,送给妈妈的礼物生命来自于运动,跑步走路骑行健身房等等都是你的运动方向,这些运动都是为了能够更多地减少因为看手机打游戏等长时间的坐着而导致的种种小毛病。因此还是让我们不找借口,拿一定的学费也是可以动漫IP小黄人的联名产品,努比亚也变成黄颜色了时光荏苒,岁月如梭,不知不觉间距离2021年5月20日,已经过去了2个多月了。记得520那一天,努比亚举发布了Z系列最新一代影像旗舰努比亚Z30Pro手机。同时在这场星影相随的主题