博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
剑指Offer编程题2——替换空格
阅读量:4841 次
发布时间:2019-06-11

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

剑指Offer编程题2——替换空格

题目描述

请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
 

题目解析:

从前向后扫描时,移动元素会出现覆盖的情况,因此选择从后往前扫描:

遇到空格时,将空格以后的字符串都向后移动两个位置,空格处放%,因此需要从最后一个元素开始移动,避免元素覆盖。

代码

class Solution {public:    void replaceSpace(char *str,int length) {        int i=length-1;        int j,count=0;        while(i>=0)    //从后向前扫描字符串        {            if(str[i]==' ')            {                for(j=length-1;j>=i;j--)                    str[j+2]=str[j];       //将字符串从空格到最后的移动两个位置                str[i]='%';                str[i+1]='2';                str[i+2]='0';                length+=2;            }            i--;        }    }};

 

另一种解题:

可以先计算出有多少个空格,需要向后移动多少,这样可以减少每次都从最后一个移动

 

 

转载于:https://www.cnblogs.com/wyx501/p/10669479.html

你可能感兴趣的文章
java hasmap对象的深复制实现:字节码复制和对象序列化成字符串复制比较。
查看>>
非一般的数据挖掘机:关联规则法
查看>>
粗糙的贝叶斯转化概率预测模型
查看>>
【随笔】8月14日
查看>>
Spring支持的@Transactional声明式事务管理的功能
查看>>
雷林鹏分享:jQuery EasyUI 表单 - 格式化下拉框
查看>>
导出excel失败,提醒提示加载类型库/DDL出错
查看>>
.NET基础架构方法—DataTableToExcel通用方法
查看>>
一篇很全面的freemarker教程
查看>>
linux常用命令(个人总结)
查看>>
city-picker插件使用-移动h5三级联动
查看>>
如何安装多操作系统
查看>>
Codeforces 1132G(dfs序+线段树)
查看>>
Hibernate
查看>>
十二、异常处理
查看>>
HashMap和HashTable的区别
查看>>
团队作业9————事后诸葛亮分析
查看>>
quartz.net 使用(一)-执行定时计划任务
查看>>
github上的版本和本地版本冲突的解决方法
查看>>
Centos7安装gitlab服务器
查看>>