博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
剑指 Offer 05. 替换空格
阅读量:4033 次
发布时间:2019-05-24

本文共 1271 字,大约阅读时间需要 4 分钟。

题目描述

请实现一个函数,把字符串 s 中的每个空格替换成"%20"。

示例 1:

输入:s = “We are happy.”

输出:“We%20are%20happy.”

限制:

0 <= s 的长度 <= 10000

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/ti-huan-kong-ge-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

C++

方法1:如果不强制要求在原来的字符串替换

class Solution {
public: string replaceSpace(string s) {
/* 创建一个新字符串 然后遍历赋值 */ if(s.size()==0) return s; string res; for(int i=0;i

方法2:如果要求在原来的字符上替换

替换相当于用三个字符替换现在的一个字符,所以字符串整体需要向后移动;
先统计字符串中空格字数
然后设置两个指针, 一个指向现在的尾部
另一个指向替换之后的字符串尾部

class Solution {
public: string replaceSpace(string s) {
if(s.size()==0) return s; int befor_len=s.size()-1; //指针1; int count=0; //字符串中的空格个数 for(char c : s){
if(c==' ') count++; } int now_len=befor_len+count*2; //指针2 s+=string(count*2,' '); //把原字符串空间扩大 while(befor_len>=0 && now_len> befor_len){
if(s[befor_len]==' '){
s[now_len--]='0'; s[now_len--]='2'; s[now_len--]='%'; } else{
s[now_len--]=s[befor_len]; } befor_len--; } return s; }};

这两个方法的时间复杂度都是O(n)

你可能感兴趣的文章
openstack网络总结
查看>>
excel 查找一个表的数据在另一个表中是否存在
查看>>
centos 7 上配置dnsmasq 同时支持ipv4和ipv6的DHCP服务
查看>>
AsyncTask、View.post(Runnable)、ViewTreeObserver三种方式总结frame animation自动启动
查看>>
Android中AsyncTask的简单用法
查看>>
S3C6410启动模式介绍
查看>>
S3C2440 USB 设备控制器(转)
查看>>
Linux usb 设备驱动 (1)
查看>>
解决跨网场景下,CAS重定向无法登录的问题(无需修改现有代码)
查看>>
java反编译命令
查看>>
activemq依赖包获取
查看>>
概念区别
查看>>
关于静态块、静态属性、构造块、构造方法的执行顺序
查看>>
final 的作用
查看>>
在Idea中使用Eclipse编译器
查看>>
idea讲web项目部署到tomcat,热部署
查看>>
JMeter 保持sessionId
查看>>
IDEA Properties中文unicode转码问题
查看>>
Idea下安装Lombok插件
查看>>
zookeeper
查看>>