如果不需要原地操作,则一遍遍历,将非空串复制,遇到空格加上%20,如果需要原地操作,首先进行遍历出空格的个数x,然后扩容2x,从后往前遍历实现。如果非空格字符串比空格字符串多的多的时候而且字符串非常长的时候使用原地操作节省空间。

下面证明不会发生冲突:

字符串长度为n,空格数为x,扩容以后为n+2x。从后往前遍历到第i个字符的时候,假设经过了j个空格,j⩽\leqslant⩽x,新串占用空间为i+2j,总空间为n+2x,则新串所占用串的头地址为n+2x-i-2j,旧串所占用串的尾地址为n-i-1<n+2x-i-2j,所以不会发生冲突。

实现代码

#include <iostream>
#include <string>using namespace std;int main()
{string s;getline(cin, s);int cnt=0;int len=s.size();for(int i=0 ; i<len; ++i){if(s[i]==' ') ++cnt;}int idx=len+cnt*2;s.resize(idx);for(int i=len-1; i>=0; --i){if(s[i]==' '){s[--idx]='0'; s[--idx]='2'; s[--idx]='%%';} else{s[--idx]=s[i];}}cout<<s;return 0;
}

将字符串中的空格用%20替换相关推荐

  1. java字符串替换逗号_将字符串中的空格用逗号替换 | 学步园

    一个字符串里面包含了一些位置不定的空格符,把里面所有的非空格字符找出来,把空格用','替换. 替换后的句子末尾必须有一个','存在. 例如"this is an demo"替换后应 ...

  2. js字符串中的空格用nbsp替换的几种方式

    想达到这样的效果,解决调用接口数据传来的多空格字符正确渲染在浏览器页面上,进而方便传值的问题(其实一般情况下,渲染值和实际值视觉效果有所不同) 例如:把str="a b c" =& ...

  3. 浅谈C语言将字符串中的空格替换成%20的几种方法(附图超级详细解答)

    文章目录 题目分析 暴力位移法 巧用数组法 高效倒放法 题目分析 将字符串中的空格替换为%20.样例: "abc defgx yz" 转换成 "abc%20defgx%2 ...

  4. C语言实现:替换空格(替换字符串中的空格)

    一.题目描述 实现函数,把字符串中的空格替换为"%20" 例如:把字符串"We are like study."中的空格全都替换为"%20" ...

  5. php 替换 tab,PHP 删除字符串中的空格和换行符终极方法 - 文章教程

    有时我们生成的代码中,或多或少会遇到代码中或者字符串中有多余的空格.换行等其他字符,但是这些字符在浏览器里面是不显示出来,任何的换行和再多的空格,都只显示一个空格的空间,这势必对网页的优化有这极其不好 ...

  6. js替换字符串中的空格,换行符

    js替换字符串中的空格,换行符\r\n或\n替换成 转载 为了让回车换行符正确显示,需要将 \n 或 \r\n 替换成 .同样地,将空格替换存  .这里我们通过正则表达式来替换. 一.替换所有的空格. ...

  7. 在Java中从字符串中删除空格

    我有一个像这样的字符串: mysz = "name=john age=13 year=2001"; 我想删除字符串中的空格. 我试过trim()但这只删除了整个字符串前后的空格. ...

  8. 去除Java字符串中的空格

    问题:去除Java字符串中的空格 俺有一个像这样的字符串 mysz = "name=john age=13 year=2001"; 我想要去除字符串里面的空格.我尝试使用 trim ...

  9. 7-5 输出字符串中出现的字符 (20 分)

    7-5 输出字符串中出现的字符 (20 分) 输入一个字符串(包括大小写字母和空格),除去空格输出在字符串中出现过的字符. 输入格式: 输入一个字符串 输出格式: 输出在字符串中出现过的字符,每个字符 ...

最新文章

  1. javaweb学习总结(三十)——EL函数库
  2. android开发之 - 圆形头像
  3. C#托管代码是什么?非托管代码是什么?
  4. POS DES MAC 算法
  5. SaaS权限控制:设计思路和表分析
  6. java中equals函数所在的类,重写Java中的equals方法介绍
  7. PostgreSQL中如何得到一个随机的字符
  8. day 69 orm操作之表关系,多对多,多对一(wusir总结官网的API)
  9. 数据库grant 授权
  10. 31.Linux/Unix 系统编程手册(上) -- 线程:线程安全和每线程存储
  11. wince 错误 Error: failed PB timebomb check
  12. php 将录音转化成文字,录音转文字助手app下载 录音转文字助手(语音转文字/在线翻译)for android V4.8.2 安卓免费版 下载-脚本之家...
  13. 2021大学生创业计划书范例
  14. Git GUI中文乱码问题解决方法
  15. 场景管理:四叉树算法C++实现
  16. 众安保险 x StarRocks | 全新实时分析能力开启数字化经营新局面
  17. css -- 为什么:last-child 无效?
  18. vertical-align的用法
  19. 海鲜吃得好,喝酒少不了,盒马痛风套餐来了
  20. 英文单词按字母顺序排序

热门文章

  1. STM32上使用JSON
  2. serialVersionUID的作用以及如何用idea自动生成实体类的serialVersionUID
  3. 使用Gitolite搭建Gitserver
  4. linux里的进程简介
  5. 【SQL】服务器环境下的SQL
  6. class threading.Thread()说明:
  7. linux raw socket 例子,raw socket编程例子
  8. php+原生代码+赋值,js重新赋值原生的方法
  9. arcgis已试图对空几何执行该操作_ArcGIS中地理配准与空间校正的不同
  10. python while break try 无法中断_解码不能正常工作并且while循环不能正确中断python...