算法练习:将字符串中所有的空格替换为'%20'(只用基本数据结构)
2019独角兽企业重金招聘Python工程师标准>>>
<!-- lang: java -->
package codinginterview;/*** 写一个函数,把字符串中所有的空格替换为%20 。* 分析:* 先遍历一次字符串,得到空格个数,进而得到将空格转换成%20后的串长度 (每个空格替换为%20需要增加2个字符,x个空格增加2x个字符)。* 然后从后向前依次对空格进行替换,非空格原样拷贝。* 如果原串有足够大的空间, 则替换过程直接在原串上进行, 因为从后向前替换的过程中,新串用到的空间一定是旧串不需要的空间;* 如果原串的空间不够大,或是就直接是字符串长度,那么就新开一个串来保存替换后的结果.* @author mingdong.cheng**/
public class ReplaceStr {/*** 新开一个数组来保存替换后的结果* O(n)* @param s* @return*/public static String replace(String s) {if (s == null || s.length() == 0) return s;final char[] c = s.toCharArray();int len = c.length;int count = 0;for (int i=0;i<len;i++) {if (c[i]==' ') {++count;}}//新开一个数组来保存替换后的结果//每个空格替换为%20后需要增加2个字符,count个空格增加2*count个字符final char[] d = new char[len+2*count];int idx=0;for (int i=0;i<len;i++) {if (c[i]==' ') {d[idx]='%';d[idx+1]='2';d[idx+2]='0';idx += 3;} else {d[idx]=c[i];idx++;}}return String.valueOf(d);}public static String replace2(String s) {if (s == null || s.length() == 0) return s;int len=s.length();int count = 0;//统计空格个数for (int i=0;i<len;i++) {if (s.charAt(i)==' ') {++count;}}//将原字符串扩容for(int i=0;i<2*count;i++){s=s.concat("\0");}//扩容后,原串就会有足够大的空间;替换可直接在原串上进行;//从后向前依次对空格进行替换,非空格原样拷贝;//因为从后向前替换的过程中,新串用到的空间一定是旧串不需要的空间final char[] c = s.toCharArray();int idx=len-1+2*count;for (int i=len-1; i>=0; i--) {if (c[i] == ' ') {c[idx] = '0';c[idx-1] = '2';c[idx-2] = '%';idx -= 3;} else {c[idx] = c[i];idx--;}}return String.valueOf(c);}public static void main(String[] args) {String s = " i am danielcheng . i am coding ... ";System.out.println(replace(s));System.out.println(replace2(s));}}
转载于:https://my.oschina.net/mingdongcheng/blog/145209
算法练习:将字符串中所有的空格替换为'%20'(只用基本数据结构)相关推荐
- Java之《剑指Offer》:字符串替换空格,请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happ
1. 题目描述 请实现一个函数,将一个字符串中的每个空格替换成"%20".例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. ① ...
- 程序员面试题目:请实现一个函数,把字符串中的每个空格替换成20。
来源:我是码农,转载请保留出处和链接! 本文链接:http://www.54manong.com/?id=1223 题目:请实现一个函数,把字符串中的每个空格替换成"%20".例如 ...
- c语言中空格字符怎么表示_漫画:腾讯面试题,请实现把字符串中的空格替换为“%20”...
面试现场 题目描述请实现一个函数,将一个字符串中的每个空格替换成"%20".例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. i ...
- C语言用‘%20‘替换字符串中的所有空格的算法(附完整源码)
C语言用'%20'替换字符串中的所有空格的算法 C语言用'%20'替换字符串中的所有空格的算法完整源码(定义,实现,main函数测试) C语言用'%20'替换字符串中的所有空格的算法完整源码(定义,实 ...
- C语言试题四十一之请编写一个函数,用来删除字符串中的所有空格。
1. 题目 请编写一个函数function,它的功能是:用来删除字符串中的所有空格. 2 .温馨提示 C语言试题汇总里可用于计算机二级C语言笔试.机试.研究生复试中C程序设计科目.帮助C语言学者打好程 ...
- 如何在PHP中删除字符串中的所有空格? [重复]
本文翻译自:How do I strip all spaces out of a string in PHP? [duplicate] Possible Duplicate: 可能重复: To str ...
- js去掉字符串中的所有空格
1.使用js去掉字符串中的所有空格 1.1.定义一个去空格函数方法 function Trim(str,is_global){var result;result = str.replace(/(^\s ...
- 去掉字符串中的所有空格
要去掉字符串中所有的空格,思路很自然:碰到一个空格,将其删掉,然后后面的字符前移,但当空字符比较多的时候,总这么移动,难道不复杂么?还是想想另外的办法吧. 上面的方法时间复杂度比较高,下面,我们用空间 ...
- 去除字符串中所有的空格
<script>/*一.去除字符串中所有的空格. 二.去除字符串中左边的空格与右边的空格 " a b " "a b" */ function fn( ...
最新文章
- setTimeOut() 和 setTimeInterval()
- linux c 取消宏定义
- 粒子滤波(Particle filter)
- linux之cal命令详解,linux命令大全之cal命令详解(显示日历)
- 微信小程序navigateBack如何带参数
- PIX525故障一例,求解
- android 强制更新用断点下载,Android断点下载小结
- 二、设计模式总览及工厂模式详解
- 【懒懒的Tensorflow学习笔记一之快速入门】
- 如何写优雅的代码(5)——远离临界区噩梦
- MySQL 从入门到实践,万字详解!
- 制作自定义springboot banner
- vs2015开发在网页中调用的ocx控件详解(二)
- 电脑内存不够?磁盘、硬盘
- C语言100题练习计划 27——字符串替换
- 基于python实现的猿眼电影订票系统
- HLOJ 1936 铺满方格
- php获取qq群列表,自己获取QQ群列表(上)
- 【论文阅读】结合空洞卷积的 FuseNet变体网络高分辨率遥感影像语义分割
- python指数函数的计算_python绘制指数函数
热门文章
- VTK:PolyData之RotationAroundLine
- VTK:图片之ImageToStructuredPoints
- C++在数字N中找到精确除以N的数字的算法(附完整源码)
- C++coin change 硬币找零(附完整源码)
- QT的QStylePlugin类的使用
- 经典C语言程序100例之七三
- matlab求解复数方程组,【求解】matlab求解非齐次方程组,但是系数矩阵是复数,求帮忙...
- 31,32,33_过拟合、欠拟合的概念、L2正则化,Pytorch过拟合欠拟合,交叉验证-Train-Val-Test划分,划分训练集和测试集,K-fold,Regularization
- Docker网络通信openvswitch(来自龙果学院学习资料 + 自己实验结果)
- jenkins的安装配置,插件配置,安装插件,配置maven,jdk路径,配置安装插件,项目配置,自动构建配置