当前位置:网站首页>~4.1 剑指 Offer 05. 替换空格
~4.1 剑指 Offer 05. 替换空格
2022-07-25 09:19:00 【叶萧白】
题目描述

思路
C++:
在 C++ 语言中, string 被设计成「可变」的类型,因此可以在不新建字符串的情况下实现原地修改。
思路:
(1)1个空格变成%20,长度会增加2.
—所以先统计空格的个数,然后改变string的长度
(2)i指向原字符串末尾,j指向现在字符串的末尾, ij代表原来字符串左边已经没有空格了
—如果s[i]!=’ ’ 那么s[j]=s[i]
—如果s[i]’ ’ 那么将字符串闭区间 [j-2, j] 的元素修改为 “%20”,j=j-2
我第一次知道string居然是可变长度的,原来我的问题就是不知道输入字符串的长度,所以无法确定数组的长度,最后就拿vector实现的,vector实现就类似于java,python,可以不用事先知道长度。思路就很简单了,如果是空格就添加’%20’,不是就添加原字符串就可以了。
源代码
C++
#include <iostream>
#include <vector>
using namespace std;
class Solution {
public:
string replaceSpace(string s) {
//vector函数就void就行了
vector<char > v;
for (char c : s) {
if (c==' '){
v.push_back('%');
v.push_back('2');
v.push_back('0');
} else{
v.push_back(c);
}
}
for (int i = 0; i <v.size() ; i++) {
cout<<v[i];
}
cout<<endl;
//改变string长度的解决方案:
int count = 0, len = s.size();
// 统计空格数量
for (char c : s) {
if (c == ' ') count++;
}
// 修改 s 长度
s.resize(len + 2 * count);
// 倒序遍历修改
for(int i = len - 1, j = s.size() - 1; i < j; i--, j--) {
if (s[i] != ' ')
s[j] = s[i];
else {
s[j - 2] = '%';
s[j - 1] = '2';
s[j] = '0';
j -= 2;
}
}
return s;
}
};
int main (){
Solution solution;
string s="We are friend!";
string re=solution.replaceSpace(s);
cout<<re<<endl;
return 0;
}
java:
class Solution {
public String replaceSpace(String s) {
StringBuilder res = new StringBuilder();
for(Character c : s.toCharArray())
{
if(c == ' ') res.append("%20");
else res.append(c);
}
return res.toString();
}
}
边栏推荐
- activemq--可持久化机制之AMQ
- redis操作利用游标代替keys
- 数据控制语言(DCL)
- Jspdf generates PDF files. There is a problem of incomplete files. Files are downloaded in the background, but not in the foreground
- 一文搞懂try、catch、finally(包含return)执行流程(全网最详细解析)
- 『每日一问』volatile干嘛的
- ActiveMQ -- JDBC code of persistent mechanism
- 动态添加多tab,并初始化每个tab页面
- 分享一个避免递归的部门设计方法
- 『怎么用』装饰者模式
猜你喜欢

Activemq-- delayed delivery and scheduled delivery

activemq--可持久化机制之JDBC代码

Shell script

Idea practical tips --- now change pom.xml (red) to pom.xml (blue)
![[HCTF 2018]admin](/img/d7/f0155c72d3fbddf0a8c1796a179a0f.png)
[HCTF 2018]admin

Programmers can't SQL? Ashes Engineer: all waiting to be eliminated! This is a must skill!
![[arm] Xintang nuc977 transplants wk2124 drive](/img/0c/fa21d7a44e0263dde4d3135a78818f.png)
[arm] Xintang nuc977 transplants wk2124 drive

idea 热部署

什么是单机、集群与分布式?

『每日一问』简单聊聊JMM/说说对JMM的了解
随机推荐
Composition of the interview must ask items
Comparison between symmetric encryption and asymmetric encryption
『每日一问』简单聊聊JMM/说说对JMM的了解
Unable to start debugging on the web server, the web server failed to find the requested resource
『每日一问』volatile干嘛的
Floating point number exploration
mysql中的数据结果排名
@Scheduled源码解析
Click to hide the column in wechat applet, and then click to show it
C#语言和SQL Server数据库技术
深入理解static关键字
保姆级Scanner类使用详解
通过robocopy对文件/夹进行复制
Go基础2
神经网络方法——美国波士顿房价(回归问题)
jsPDF生成PDF文件,文件不全问题,后台进行文件下载,前台不下载
ActiveMQ -- dead letter queue
OmniPeek packet capturing tool
一文搞懂为什么要同时重写equals方法和hashCode方法+实例分析
[common tools] obtain system status information based on psutil and gputil