面试题2:替换空格
来源:《剑指Offer》 题目:请实现一个函数,把字符串的每个空格替换成”%20”,原字符串后面有足够的空间,要求在原字符串上操作。例如输入”we are happy”,则输出”we%20are%20happy”。 分析:先遍历一遍统计出空格数,一个空格替换成三个字符,长度增
来源:《剑指Offer》
题目:请实现一个函数,把字符串的每个空格替换成”%20”,原字符串后面有足够的空间,要求在原字符串上操作。例如输入”we are happy”,则输出”we%20are%20happy”。
分析:先遍历一遍统计出空格数,一个空格替换成三个字符,长度增加了2,N个空格,长度增加2N。则
替换后的字符串长度 = 原字符串长度 + 2N
设置两个指针,一个指向原字符串末尾,一个指向新字符串末尾。第二遍遍历,从后往前遍历。将原字符串最后一个字符复制到新字符串最后一个字符的位置,两个指针同时前移。当原字符串遇到空格,在新字符串对应位置插入”%20”三个字符,接着原字符串指针前移1位,新字符串指针前移3位。如此操作,直到原字符串第一个字符也复制完结束。
代码(C++):
<code><span>#include<iostream></iostream></span> <span>using</span> <span>namespace</span> <span>std</span>; <span>#define MAX_LEN 100</span> <span>/* 函数功能:替换字符串中的空格 */</span> <span>void</span> replaceBlank(<span>char</span> data[]) { <span>int</span> i=<span>0</span>,j; <span>int</span> old_len; <span>int</span> new_len; <span>int</span> blank_num=<span>0</span>; <span>// 遍历一遍,找出空格数</span> <span>while</span>(data[i]!=<span>'\0'</span>) { <span>if</span>(data[i]==<span>' '</span>) { blank_num++; } i++; } <span>//-----------这里是关键------------</span> <span>// 原来字符串长度</span> old_len=i+<span>1</span>; <span>// 计算新字符串长度</span> new_len=old_len+<span>2</span>*blank_num; <span>// 重置i,j</span> i=old_len-<span>1</span>; j=new_len - <span>1</span>; <span>//-----------这里是关键------------</span> <span>// 再遍历一遍,替换空格</span> <span>while</span>(i>=<span>0</span>) { <span>if</span>(data[i]!=<span>' '</span>) { data[j]=data[i]; j--; } <span>else</span> { data[j]=<span>'0'</span>; data[j-<span>1</span>]=<span>'2'</span>; data[j-<span>2</span>]=<span>'%'</span>; j-=<span>3</span>; } i--; } } <span>int</span> main() { <span>char</span> str[MAX_LEN];<span>// 声明一个字符数组</span> <span>// 输入数组</span> <span>cout</span>"请输入一个字符串,不超过20个字符"// 替换 replaceBlank(str); <span>// 打印</span> <span>cout</span>return <span>0</span>; } </code>

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

华为手机如何实现双微信登录?随着社交媒体的兴起,微信已经成为人们日常生活中不可或缺的沟通工具之一。然而,许多人可能会遇到一个问题:在同一部手机上同时登录多个微信账号。对于华为手机用户来说,实现双微信登录并不困难,本文将介绍华为手机如何实现双微信登录的方法。首先,华为手机自带的EMUI系统提供了一个很便利的功能——应用双开。通过应用双开功能,用户可以在手机上同

全角空格与半角空格的不同之处在我们使用文字处理软件或者编辑文字内容的时候,有时候会遇到空格这个概念。空格在排版和格式化文本时是一个很基础的元素,不过很多人可能并不知道全角空格和半角空格之间的区别。在日常使用中,我们或许能感受到全角空格和半角空格在不同的情境下会产生不同的效果,但可能并没有意识到这其中的细微差别。首先,全角空格和半角空格的区别在于它们所占据的宽

编程语言PHP是一种用于Web开发的强大工具,能够支持多种不同的编程逻辑和算法。其中,实现斐波那契数列是一个常见且经典的编程问题。在这篇文章中,将介绍如何使用PHP编程语言来实现斐波那契数列的方法,并附上具体的代码示例。斐波那契数列是一个数学上的序列,其定义如下:数列的第一个和第二个元素为1,从第三个元素开始,每个元素的值等于前两个元素的和。数列的前几个元

如何在华为手机上实现微信分身功能随着社交软件的普及和人们对隐私安全的日益重视,微信分身功能逐渐成为人们关注的焦点。微信分身功能可以帮助用户在同一台手机上同时登录多个微信账号,方便管理和使用。在华为手机上实现微信分身功能并不困难,只需要按照以下步骤操作即可。第一步:确保手机系统版本和微信版本符合要求首先,确保你的华为手机系统版本已更新到最新版本,以及微信App

在当今的软件开发领域中,Golang(Go语言)作为一种高效、简洁、并发性强的编程语言,越来越受到开发者的青睐。其丰富的标准库和高效的并发特性使它成为游戏开发领域的一个备受关注的选择。本文将探讨如何利用Golang来实现游戏开发,并通过具体的代码示例来展示其强大的可能性。1.Golang在游戏开发中的优势作为一种静态类型语言,Golang在构建大型游戏系统

PHP游戏需求实现指南随着互联网的普及和发展,网页游戏的市场也越来越火爆。许多开发者希望利用PHP语言来开发自己的网页游戏,而实现游戏需求是其中一个关键步骤。本文将介绍如何利用PHP语言来实现常见的游戏需求,并提供具体的代码示例。1.创建游戏角色在网页游戏中,游戏角色是非常重要的元素。我们需要定义游戏角色的属性,比如姓名、等级、经验值等,并提供方法来操作这些

jQuery是一种经典的JavaScript库,被广泛应用于网页开发中,它简化了在网页上处理事件、操作DOM元素和执行动画等操作。在使用jQuery时,经常会遇到需要替换元素的class名的情况,本文将介绍一些实用的方法,以及具体的代码示例。1.使用removeClass()和addClass()方法jQuery提供了removeClass()方法用于删除

PyCharm是一款功能强大的Python集成开发环境,具有丰富的功能和工具,能够极大地提高开发效率。其中,替换功能是开发过程中经常用到的功能之一,能够帮助开发者快速修改代码并提高代码质量。本文将详细介绍PyCharm的替换功能,并结合具体的代码示例,帮助新手更好地掌握和使用该功能。替换功能简介PyCharm的替换功能可以帮助开发者在代码中快速替换指定的文本
