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'(只用基本数据结构)相关推荐

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

    1. 题目描述 请实现一个函数,将一个字符串中的每个空格替换成"%20".例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. ① ...

  2. 程序员面试题目:请实现一个函数,把字符串中的每个空格替换成20。

    来源:我是码农,转载请保留出处和链接! 本文链接:http://www.54manong.com/?id=1223 题目:请实现一个函数,把字符串中的每个空格替换成"%20".例如 ...

  3. c语言中空格字符怎么表示_漫画:腾讯面试题,请实现把字符串中的空格替换为“%20”...

    面试现场 题目描述请实现一个函数,将一个字符串中的每个空格替换成"%20".例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. i ...

  4. C语言用‘%20‘替换字符串中的所有空格的算法(附完整源码)

    C语言用'%20'替换字符串中的所有空格的算法 C语言用'%20'替换字符串中的所有空格的算法完整源码(定义,实现,main函数测试) C语言用'%20'替换字符串中的所有空格的算法完整源码(定义,实 ...

  5. C语言试题四十一之请编写一个函数,用来删除字符串中的所有空格。

    1. 题目 请编写一个函数function,它的功能是:用来删除字符串中的所有空格. 2 .温馨提示 C语言试题汇总里可用于计算机二级C语言笔试.机试.研究生复试中C程序设计科目.帮助C语言学者打好程 ...

  6. 如何在PHP中删除字符串中的所有空格? [重复]

    本文翻译自:How do I strip all spaces out of a string in PHP? [duplicate] Possible Duplicate: 可能重复: To str ...

  7. js去掉字符串中的所有空格

    1.使用js去掉字符串中的所有空格 1.1.定义一个去空格函数方法 function Trim(str,is_global){var result;result = str.replace(/(^\s ...

  8. 去掉字符串中的所有空格

    要去掉字符串中所有的空格,思路很自然:碰到一个空格,将其删掉,然后后面的字符前移,但当空字符比较多的时候,总这么移动,难道不复杂么?还是想想另外的办法吧. 上面的方法时间复杂度比较高,下面,我们用空间 ...

  9. 去除字符串中所有的空格

    <script>/*一.去除字符串中所有的空格. 二.去除字符串中左边的空格与右边的空格 " a b " "a b" */ function fn( ...

最新文章

  1. setTimeOut() 和 setTimeInterval()
  2. linux c 取消宏定义
  3. 粒子滤波(Particle filter)
  4. linux之cal命令详解,linux命令大全之cal命令详解(显示日历)
  5. 微信小程序navigateBack如何带参数
  6. PIX525故障一例,求解
  7. android 强制更新用断点下载,Android断点下载小结
  8. 二、设计模式总览及工厂模式详解
  9. 【懒懒的Tensorflow学习笔记一之快速入门】
  10. 如何写优雅的代码(5)——远离临界区噩梦
  11. MySQL 从入门到实践,万字详解!
  12. 制作自定义springboot banner
  13. vs2015开发在网页中调用的ocx控件详解(二)
  14. 电脑内存不够?磁盘、硬盘
  15. C语言100题练习计划 27——字符串替换
  16. 基于python实现的猿眼电影订票系统
  17. HLOJ 1936 铺满方格
  18. php获取qq群列表,自己获取QQ群列表(上)
  19. 【论文阅读】结合空洞卷积的 FuseNet变体网络高分辨率遥感影像语义分割
  20. python指数函数的计算_python绘制指数函数

热门文章

  1. VTK:PolyData之RotationAroundLine
  2. VTK:图片之ImageToStructuredPoints
  3. C++在数字N中找到精确除以N的数字的算法(附完整源码)
  4. C++coin change 硬币找零(附完整源码)
  5. QT的QStylePlugin类的使用
  6. 经典C语言程序100例之七三
  7. matlab求解复数方程组,【求解】matlab求解非齐次方程组,但是系数矩阵是复数,求帮忙...
  8. 31,32,33_过拟合、欠拟合的概念、L2正则化,Pytorch过拟合欠拟合,交叉验证-Train-Val-Test划分,划分训练集和测试集,K-fold,Regularization
  9. Docker网络通信openvswitch(来自龙果学院学习资料 + 自己实验结果)
  10. jenkins的安装配置,插件配置,安装插件,配置maven,jdk路径,配置安装插件,项目配置,自动构建配置