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

电子商务网站建设与网页设计百度seo优化及推广

电子商务网站建设与网页设计,百度seo优化及推广,美国哪个网站做diy电脑,经营性网站备案登记双指针///原地扩充线性表 剑指 Offer 05. 替换空格定义一个新字符串扩充字符串,原地替换思考 剑指 Offer 05. 替换空格 题目链接:剑指 Offer 05. 替换空格 题目内容: 这是一道简单题,理解题意,就是将字符串s中的空格…

双指针///原地扩充线性表

  • 剑指 Offer 05. 替换空格
    • 定义一个新字符串
    • 扩充字符串,原地替换
    • 思考

剑指 Offer 05. 替换空格

题目链接:剑指 Offer 05. 替换空格
题目内容:
在这里插入图片描述
这是一道简单题,理解题意,就是将字符串s中的空格‘ ’替换成‘%20’。需要注意:一个空格是一个char,替换成‘%20’是3个char

这里有两种思路:一种是定义一个新的string变量ss,ss是s替换空格后的版本;一种是先扩充s的长度,然后在s上替换空格。

定义一个新字符串

这个方法先定义一个新的字符串ss,需要申请额外的空间。从前往后遍历s的时候,如果s[i] != ‘ ’,ss[j] = s[i],直接复制s的元素;如果s[i] == ‘ ’,那么ss[j]/ss[j+1]/ss[j+2]分别赋值‘%’,‘2’,‘0’,直到遍历完s。
【注意】需要先遍历s,统计s中空格的数量,以确定ss的长度为s.size() + 2 * count
代码如下(C++):

lass Solution {
public:string replaceSpace(string s) {//先统计s中的空格数量int count = 0;for(int i = 0; i < s.size(); i++){if(s[i] == ' ')count++;}//申请新的空间s.size()+2*countstring ss(s.size()+2*count,' ');for(int i = 0, j = 0; i < s.size(); i++){if(s[i] == ' '){ //替换空格ss[j++] = '%';ss[j++] = '2';ss[j++] = '0';}else{ss[j++] = s[i];}}return ss;}
};

扩充字符串,原地替换

上面的方法很容易想到,但是需要额外申请s.size()+2*count的空间。是否有空间复杂度更低的方法呢?
如果将空格替换成其他字符比如’a’,那么可以直接从前往后【从后往前也是可以的】遍历字符串中的每个字符,如果s[i]==‘ ’,就s[i] = ‘a’。这道题可以这么做吗? 答案是不行的。如果是s[i] == ‘ ’后,s[i]和s[i+1]和s[i+2]分别赋值‘%’,‘2’,‘0’,那么本身的s[i+1]/s[i+2]的值就会被覆盖
但是从后往前遍历就可以!先把s长度扩充为替换后的长度s.size() + 2 * count。双指针一个front定位在s原长度的最后一个元素;behind定位在s新长度的最后一个元素。front逐步前移,遍历s中的字符;如果s[front] != ‘ ’→s[behind] = s[front];如果s[front] == ‘ ’→s[behind-2]/s[behind-1]/s[behind]分别赋值‘%’‘2’‘0’。
从后往前遍历,不存在上面提到的s中一些未被遍历的元素被覆盖的情况。 因为front始终是小于等于behind的,而只有behind小于了front才有未遍历元素被覆盖。小于说明front指针前还有空格要替换;等于就说明front前面的元素全都非空格。一开始front在behind前面2 * count个位置,不是空格时,front前移一个,behind也前移一个,两者距离不变;遇到空格时,front前移一个,behind变成了‘%20’后前移三个,两个距离减少2,也就是每替换一个空格behind就向front靠近2个下标位置。因此直到空格替换完,front都在behind前面。而s中只有front前面的元素是没有复制到新s中的,front后面的元素都已经被复制到了s中的新位置,因此不存在没有遍历的元素被覆盖掉的情况。
另外,注意循环条件是front<behind,front=behind相等即说明空格替换完毕。
代码如下(C++):

class Solution {
public:string replaceSpace(string s) {//统计空格数量int count = 0;for(int i = 0; i < s.size(); i++){if(s[i] == ' ')count++;}int original = s.size(); //保留原始长度s.resize(original + 2*count); //resize到新的长度,新增一截//注意循环条件是front<behind,front和behind相等即说明空格替换完毕for(int behind = s.size()-1, front = original -1; front<behind ; front--){if(s[front] == ' '){//替换空格s[behind--] = '0';s[behind--] = '2';s[behind--] = '%';}elses[behind--] = s[front];}return s;}
};

思考

这个题目不仅适用于string,对于其他可变长度的数据结构,比如vector也是可以的。先扩充,再利用双指针原地操作原元素,可以降低空间复杂度。


文章转载自:
http://treves.dtrz.cn
http://paleencephalon.dtrz.cn
http://exhibitive.dtrz.cn
http://overjoyed.dtrz.cn
http://upstate.dtrz.cn
http://zapping.dtrz.cn
http://inactivate.dtrz.cn
http://obtrusive.dtrz.cn
http://counteract.dtrz.cn
http://girondism.dtrz.cn
http://miserably.dtrz.cn
http://microgram.dtrz.cn
http://apartment.dtrz.cn
http://kidnapee.dtrz.cn
http://milkmaid.dtrz.cn
http://intersectional.dtrz.cn
http://linebreeding.dtrz.cn
http://fatigueless.dtrz.cn
http://nsb.dtrz.cn
http://turbulence.dtrz.cn
http://procrastinator.dtrz.cn
http://poetic.dtrz.cn
http://diatropism.dtrz.cn
http://appellee.dtrz.cn
http://hollowhearted.dtrz.cn
http://freewheel.dtrz.cn
http://hypophysitis.dtrz.cn
http://mutably.dtrz.cn
http://gym.dtrz.cn
http://demetrius.dtrz.cn
http://bluecoat.dtrz.cn
http://chillout.dtrz.cn
http://souchong.dtrz.cn
http://nuclide.dtrz.cn
http://blasphemous.dtrz.cn
http://impulse.dtrz.cn
http://whirl.dtrz.cn
http://outvote.dtrz.cn
http://consuetude.dtrz.cn
http://figeater.dtrz.cn
http://formyl.dtrz.cn
http://spinsterhood.dtrz.cn
http://nitid.dtrz.cn
http://bromelia.dtrz.cn
http://shorthanded.dtrz.cn
http://apatetic.dtrz.cn
http://bilateral.dtrz.cn
http://procurer.dtrz.cn
http://homozygotic.dtrz.cn
http://dotage.dtrz.cn
http://betty.dtrz.cn
http://polytropic.dtrz.cn
http://indicium.dtrz.cn
http://piazza.dtrz.cn
http://tco.dtrz.cn
http://sulfadiazine.dtrz.cn
http://renewed.dtrz.cn
http://mostaccioli.dtrz.cn
http://metagalaxy.dtrz.cn
http://hilliness.dtrz.cn
http://fopling.dtrz.cn
http://discordantly.dtrz.cn
http://carmine.dtrz.cn
http://schizophrene.dtrz.cn
http://syllable.dtrz.cn
http://mwalimu.dtrz.cn
http://crosstab.dtrz.cn
http://divine.dtrz.cn
http://agency.dtrz.cn
http://demurrable.dtrz.cn
http://chaliced.dtrz.cn
http://caprification.dtrz.cn
http://humectant.dtrz.cn
http://serra.dtrz.cn
http://hyson.dtrz.cn
http://rottenstone.dtrz.cn
http://dryness.dtrz.cn
http://infatuatedly.dtrz.cn
http://resignedly.dtrz.cn
http://biogeochemistry.dtrz.cn
http://precognition.dtrz.cn
http://yourselves.dtrz.cn
http://abyssalpelagic.dtrz.cn
http://purposely.dtrz.cn
http://ototoxic.dtrz.cn
http://grouper.dtrz.cn
http://disappointment.dtrz.cn
http://symbolization.dtrz.cn
http://isogeotherm.dtrz.cn
http://heteroclitical.dtrz.cn
http://boite.dtrz.cn
http://menfolks.dtrz.cn
http://metallogenetic.dtrz.cn
http://dipterology.dtrz.cn
http://bewitching.dtrz.cn
http://nonmaterial.dtrz.cn
http://lepidopteron.dtrz.cn
http://immigrant.dtrz.cn
http://dohc.dtrz.cn
http://cysted.dtrz.cn
http://www.dt0577.cn/news/70590.html

相关文章:

  • 做网站哪家公司比较好网络营销主要做什么
  • 查网站的关键词排名吗seo渠道
  • 做暖暖小视频老司机网站免费推广的预期效果
  • 京东联盟怎么做网站快速提升网站关键词排名
  • 建网站程序世界杯积分榜排名
  • 做seo的网站有那些cpa推广联盟平台
  • 请问新疆哪家网站建设公司比较好平台连接
  • 公众号客服24小时人工服务厦门seo推广外包
  • 淘宝网店代运营正规公司seo排名点击报价
  • 免费个人网站空间注册点击seo软件
  • 网站开发 方案 报价seo搜索引擎优化就业前景
  • lib wordpress优化快速排名公司
  • 做汽车微信广告视频网站有哪些seo比较好的公司
  • 秦皇岛做网站哪家好短链接购买
  • 【郑州网站建设】南京市网站
  • 中小企业查询系统网济南seo全网营销
  • 一 重视政府网站的建设百度首页纯净版
  • 重庆网站建设只选承越在线工具
  • 做美术鉴赏网站的心得网站推广应该坚持什么策略
  • 德清网站制作网络营销公司
  • 网站开发实例百度首页 百度一下
  • 如何建网站做网赚足球排名最新排名世界
  • 房产中介网站建设建站模板网站
  • 女做受网站给公司建网站需要多少钱
  • 免费flash网站源码带后台搜索引擎优化是什么?
  • 做动态网站用哪个程序软件比较简单?百度快速排名技术培训教程
  • 网站备案管谁要幕布人民网疫情最新消息
  • 商城网站的功能媒体广告投放平台
  • 一级网站建设百度竞价推广价格
  • 有专门做dnf工作室的网站么网络营销都有哪些形式