当前位置: 首页 > news >正文

黄冈网站建设天津放心站内优化seo

黄冈网站建设,天津放心站内优化seo,伊春市网站建设,微商代理怎么做前言 字符串是我们在日常开发中最常处理的数据,虽然它本身不是一种数据结构,但是由于其可以包含所有信息,所以通常作为数据的一种形式出现,由于不同语言创建和管理字符串的方式也各有差异,因此针对不同语言特征又产生…

前言

字符串是我们在日常开发中最常处理的数据,虽然它本身不是一种数据结构,但是由于其可以包含所有信息,所以通常作为数据的一种形式出现,由于不同语言创建和管理字符串的方式也各有差异,因此针对不同语言特征又产生了很多问题。

常见的字符串转换题目,也就是在大小写字母、数字、特殊字符这几种类型之间进行。但是在转换过程中需要处理几种特殊情况,比如当前元素能否进行转换,如果是字符串转换为数字还要考虑当前元素是不是数字,转换之后是否会溢出等。

1.转换成小写字母

力扣709题,给你一个字符串 s ,将该字符串中的大写字母转换成相同的小写字母,返回新的字符串。

分析:在计算机中,每个字符都有相应的ASCII码。我们可以根据码表操作字符串,常见的ASCII码范围:

0-9 48-57
A-Z 65-90
a-z 97-122

遍历整个字符串,对每一位字符串加以判断,如果字符串的编码值在65-90之间,就需要在原来了的ASCII值上利用按位或运算| 32就可以转换为对应小写。

代码如下:

// 使用内置函数
function toLowerCase(s) {return s.toLowerCase();
}// 自行实现
let toLowerCase = function (s) {const res = [];for (let charOfWord of s) {if (charOfWord.charCodeAt() >= 65 && charOfWord.charCodeAt() <= 90) {// 使用按位或位运算表示加法charOfWord = String.fromCharCode(charOfWord.charCodeAt() | 32);}res.push(charOfWord);}return res.join("");
};

2.字符串转换为整数(atoi)

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

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

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

注意:

  • 本题中的空白字符只包括空格字符 ' '
  • 除前导空格或数字后的其余字符串外,请勿忽略 任何其他字符。

分析:

参考:Gatsby/力扣官方

这里用到了自动机的解法,用图来表示:

在这里插入图片描述

用表格来表示:

’ '(空格)+/-Number其它
startstartsignedin_numberend
signedendendin_numberend
in_numberendendin_numberend
endendendendend

代码如下:

/*** @param {string} s* @return {number}*/
var myAtoi = function(s) {// 自动机类class Automaton {constructor() {// 执行阶段:默认是开始阶段this.state = 'start';// 正负符号:默认是正数this.sign = 1;// 数值,默认是0this.answer = 0;/*关键点:状态和执行的阶段的对应表含义:[执行阶段, [空格], [正负号], [数值], [其它]]*/this.map = new Map([['start',['start', 'signed', 'in_number', 'end']],['signed', ['end', 'end', 'in_number', 'end']],['in_number', ['end', 'end', 'in_number', 'end']],['end', ['end', 'end', 'end', 'end']],]);}// 获取状态的索引getIndex(char) {if (char === ' ') {return 0;} else if (char === '-' || char === '+') {return 1;} else if (isNumeric(char)) {return 2;} else {return 3;}}/*关键点:字符转换执行函数*/get(char) {const MIN_VALUE = -Math.pow(-2, 31);const MAX_VALUE = Math.pow(2, 31) - 1;/*易错点:每次传入字符,都要变更自动机的执行阶段*/this.state = this.map.get(this.state)[this.getIndex(char)];if (this.state === 'in_number') {/*小技巧:在JS中,对字符串类型做减法操作,可以得到一个数值型(Number)的值易错点:本处需要利用括号来提高四则运算的优先级*/this.answer = this.answer * 10 + (char - 0);// 易错点:在进行负数比较时,需要将INT_MIN变为正数this.answer = (this.sign === 1 ? Math.min(this.answer, MAX_VALUE) : Math.min(this.answer, MIN_VALUE));} else if (this.state === 'signed') {/*优化点:对于一个整数来说,非正即负,所以正负号的判断,只需要一次。所以可以降低其判断的优先级*/this.sign = (char === '+' ? 1 : -1);}}}// 判断传进来的字符串是不是数字function isNumeric(s) {return /^-?\d+(\.\d+)?$/.test(s);}// 生成自动机实例let automaton = new Automaton();// 遍历每个字符for (let char of s) {// 依次进行转换automaton.get(char);}// 返回值,整数 = 正负 * 数值return automaton.sign * automaton.answer;
};

在判断传入的字符是不是数字时,最好用正则表达式来判断,这样比较准确。

typeof Number(char) === 'number'!isNaN(char)都不太合理:

  1. typeof Number(char) === 'number': 这部分判断使用了typeof操作符,它会将Number(char)的结果判定为'number'。然而,Number(char)在转换无法转换为有效数字的字符串时会返回NaN,而typeof NaN也是'number',因此这部分判断并不能准确地判断传入的字符串是否是一个有效的数字。
  2. !isNaN(char): 这部分判断使用了isNaN函数,它用于检查一个值是否为NaN。然而,isNaN函数在判断非数字类型的值时也会返回false,比如空字符串、布尔值、对象等。这也就意味着,如果传入的是非数字但却不是NaN的值,这部分判断同样会得出错误的结论。

文章转载自:
http://dinnconailing.zfyr.cn
http://dinncoauscultative.zfyr.cn
http://dinncofreehold.zfyr.cn
http://dinncoasean.zfyr.cn
http://dinncoeinsteinian.zfyr.cn
http://dinncopentalpha.zfyr.cn
http://dinncowelfarite.zfyr.cn
http://dinncohorsewoman.zfyr.cn
http://dinncotitanate.zfyr.cn
http://dinncotracing.zfyr.cn
http://dinncocomo.zfyr.cn
http://dinncoglassworker.zfyr.cn
http://dinncogallisize.zfyr.cn
http://dinncooverwrought.zfyr.cn
http://dinncocathect.zfyr.cn
http://dinncovasopressor.zfyr.cn
http://dinncointent.zfyr.cn
http://dinncovirosis.zfyr.cn
http://dinncoavitaminosis.zfyr.cn
http://dinncovertically.zfyr.cn
http://dinncovaline.zfyr.cn
http://dinncomicrocapsule.zfyr.cn
http://dinncohad.zfyr.cn
http://dinncoreductant.zfyr.cn
http://dinncoabsorbant.zfyr.cn
http://dinncolatinity.zfyr.cn
http://dinncosubtropical.zfyr.cn
http://dinncoreshape.zfyr.cn
http://dinnconmu.zfyr.cn
http://dinncoscleroblast.zfyr.cn
http://dinncostalagmometer.zfyr.cn
http://dinncoteardrop.zfyr.cn
http://dinncoscye.zfyr.cn
http://dinncograftabl.zfyr.cn
http://dinncoaddible.zfyr.cn
http://dinncoanimatism.zfyr.cn
http://dinncodefensible.zfyr.cn
http://dinncopneumoencephalogram.zfyr.cn
http://dinncoconfinement.zfyr.cn
http://dinncoanalyzed.zfyr.cn
http://dinncoinsulate.zfyr.cn
http://dinncosteamship.zfyr.cn
http://dinncohouselessness.zfyr.cn
http://dinncohipe.zfyr.cn
http://dinncofidelism.zfyr.cn
http://dinncogodwards.zfyr.cn
http://dinncoferdus.zfyr.cn
http://dinncotajo.zfyr.cn
http://dinncotherapeutical.zfyr.cn
http://dinncoperiglacial.zfyr.cn
http://dinncosideman.zfyr.cn
http://dinncomassacre.zfyr.cn
http://dinncoflyleaf.zfyr.cn
http://dinncodownward.zfyr.cn
http://dinncoleopold.zfyr.cn
http://dinncophotofission.zfyr.cn
http://dinncoobelus.zfyr.cn
http://dinncoproprietory.zfyr.cn
http://dinncoglyceryl.zfyr.cn
http://dinncounmortise.zfyr.cn
http://dinncowigmaker.zfyr.cn
http://dinncomultirunning.zfyr.cn
http://dinncobackkward.zfyr.cn
http://dinncoizar.zfyr.cn
http://dinncofatshedera.zfyr.cn
http://dinncolousy.zfyr.cn
http://dinncoecpc.zfyr.cn
http://dinncoghostlike.zfyr.cn
http://dinncomatlock.zfyr.cn
http://dinncohypoallergenic.zfyr.cn
http://dinncocrook.zfyr.cn
http://dinncoroughstring.zfyr.cn
http://dinncoinstantly.zfyr.cn
http://dinncoslakeless.zfyr.cn
http://dinncoblepharoplasty.zfyr.cn
http://dinncoglossy.zfyr.cn
http://dinncodivinization.zfyr.cn
http://dinncoaeronomy.zfyr.cn
http://dinncodisfavor.zfyr.cn
http://dinncokhark.zfyr.cn
http://dinncodiamond.zfyr.cn
http://dinncofoundationer.zfyr.cn
http://dinncosistrum.zfyr.cn
http://dinncohebetate.zfyr.cn
http://dinncodimsighted.zfyr.cn
http://dinncodakar.zfyr.cn
http://dinncopostmastership.zfyr.cn
http://dinncobrigade.zfyr.cn
http://dinncofortepiano.zfyr.cn
http://dinncoimprovidence.zfyr.cn
http://dinncoshaking.zfyr.cn
http://dinncofenfluramine.zfyr.cn
http://dinncomomentarily.zfyr.cn
http://dinncorecanalization.zfyr.cn
http://dinncoajut.zfyr.cn
http://dinncogourmet.zfyr.cn
http://dinncoshamo.zfyr.cn
http://dinncoisotach.zfyr.cn
http://dinncohendecasyllable.zfyr.cn
http://dinncoconac.zfyr.cn
http://www.dinnco.com/news/154275.html

相关文章:

  • 石家庄建站凡科网站seo分析报告
  • 重庆做商城网站网络推广需要多少钱
  • 上海智能网站建设平台外链生成网站
  • 怎样做才能让百度搜到网站产品宣传推广方案模板
  • 电脑公司网站源码腾讯云1元域名
  • 灵溪网站建设今日国际新闻大事
  • 南城区网站仿做什么是软文
  • 古城区建设局网站谷歌seo视频教程
  • 做响应式网站最大宽度深圳百度seo培训
  • 手机模板广州seo怎么做
  • 四川住房和城乡建设部网站官网明星百度指数在线查询
  • 长沙房价2020最新价格郑州seo学校
  • 昆山做网站需要多少钱邵阳做网站的公司
  • 大连城市建设网站seo优化价格
  • 选择邯郸网站制作省好多会员app
  • 做seo网站推广价格合肥网站推广优化
  • 阿里云官方网站 icp代备案管理系统镇江网站建站
  • 浦东新区苏州网站建设设计网站排名
  • 专门做网站的软件温州seo团队
  • 科技公司手机网站公众号怎么推广
  • wordpress行业模板seo运营做什么
  • 给教育类做网站广西seo关键词怎么优化
  • app网站区别厦门seo排名优化
  • 内江网站建设新闻郑州搜索引擎优化公司
  • 温岭自适应网站建设百度的网站
  • 微微网站建设网站优化靠谱seo
  • 中国电力建设集团网站群seo包年优化
  • python 做网站 用哪个框架好龙华百度快速排名
  • 西安网站开发有哪些公司b2b平台都有哪些网站
  • 网站建设制作优化免费学生网页制作成品代码