1. 题目描述

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

① 题目分析:

  1. 将空格全部替换,并且全部的字符也要输出
  2. 可变字符串,使用StringBuffer处理可变字符串
  3. 遍历所有的字符串,取出字符串中的每一个字符
  4. 判断是空格还是字符,是空格的话执行替换,不是字符的话追加字符
  5. 将字符串一个一个的出来使用的是charAt(i),取出字符的值是String.valueOf(b).equals(" ")

② 知识点补充:String,StringBuffer,StringBuilder

   String,StringBuffer,StringBuilder都是代表字符串。

String类是不可变类,任何发生对String类的改变都会让String产生一个新的对象。StringBuffer是可变类,任何对StringBuffer的字符串的改变都不会产生新的对象。StringBuffer是String字符串的一个缓冲区,相对于String来说,StringBuffer是可以改变的,StringBuffer是线程安全的。StringBuffer在任何时刻都有一个字符串序列,这个序列和长度可以通过一些函数进行调用和修改。StringBuffer是线程安全的,有几个线程同时操作StringBuffer序列,所有操作串行执行。

每一个StringBuffer都有一个容量,如果内容的大小不超过容量,StringBuffer就不会分配更大的缓冲区;如果需要更大的容量SringBuffer就会自动添加,StringBuffer是线程安全的,StringBuider不是线程安全的。StringBuffer没有同步,StringBuilder异步的话会更快一点。

StringBuffer继承了AbstractStringBuffer,在AbstractStringBuffer中,有两种类型,分别是char[]类型的值和int类型的value,也就是说StringBuffer本质上是一个数组:

//value用来存储字符,count用来存储数组中已有内容的大小,也就是数组的长度。 char[] value; int count;

StringBuffer主要的操作有append和insert等等,这些操作都是在value上执行的,而不是String,每次操作都要有一个new一个新的String对象,因此效率上,StringBuffer比String效率高。

String,StringBuffer,StringBuilder之间的区别:

  • 速度上:String<StringBuffer<StringBuilder
  • 安全上:StringBuffer是线程安全的,StringBuilder不是线程安全的
  • String的每次改变都会涉及到字符数组的复制,而SringBuffer和StringBuilder直接在字符数组上改变;

总结:

       如果对字符串的改变少,使用String。如果对字符修改的对一点,需要线程安全的就使用StringBuffer,线程不安全就使用StringBuilder


2. 代码实现

public class Solution {public String replaceSpace(StringBuffer str) {/*重新定义一个可变的字符串,然后符合条件的放进去目的是替换空格,首先要把字符串的内容每一个都遍历如果是当前字符是空格的话就替换成%20,不是的话就直接输出*///代码如下:/*定义一个空的字符串*/StringBuffer newStr = new StringBuffer();//对原数组进行循环遍历,找出空格,条件是字符串的for(int i = 0;i < str.toString().length();i++){//把字符一个一个取出来char b = str.charAt(i);//如果字符串的值等于空格的话,在StringBuffer后面追加需要的东西if(String.valueOf(b).equals(" ")){newStr.append("%20");}else{//不是空格的话就把b添加进去newStr.append(b);}}//返回的是字符串的形式return newStr.toString();}
}

3.总结

  1. 在编程语言中,修改,删除操作中,操作的话需要先取出来再进行操作。
  2. 空格替换也是一样的道理,先取出来进行判断。
  3. 最近在思考,其实是有点着急的,下年毕业论文就开题,所有的事情一下都忙起来了。告诉自己慢慢积累,慢慢来。
  4. 最近大连理工的研究生不幸离世,感到挺可惜的。搞科研,要做出点成绩,压力是肯定有的。无论人生遇到什么困难,相信自己一定会度过的。记住,自己的命是父母给的,如果不想要,首先打电话问问父母同不同意。
  5. 培养自己的抗压能力,压力大的时候去操场跑步,释放压力。
  6. 很喜欢任正非说的一句话:

    没有伤痕累累,哪来皮糙肉厚,英雄自古多磨难! 苦难的生活,是我人生的最好锻炼,我学会了不少东西,明白了不少事理。

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

  1. Java算法:牛客网Java版剑指Offer全套算法面试题目整理及电子档,Java算法与数据结构面试题,面试刷题、背题必备!牛客网剑指offer

    剑指offer(java版) 牛客网Java版剑指Offer全套题目67道 资源来源于网络 目录 1.二维数组中的查找 2.替换空格 3.从尾到头打印链表 4.重建二叉树 5.用两个栈实现队列 6.旋 ...

  2. 【Java】 剑指offer(50-2) 字符流中第一个只出现一次的字符

    本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字 ...

  3. 【Java】 剑指offer(28) 对称的二叉树

    本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 请实现一个函数,用来判断一棵二叉树是不是对称的.如果一棵二叉树和它 ...

  4. 【Java】 剑指offer(27) 二叉树的镜像

    本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 请完成一个函数,输入一个二叉树,该函数输出它的镜像. 思路 画图可 ...

  5. 剑指offer——面试题32:从1到n整数中1出现的次数

    剑指offer--面试题32:从1到n整数中1出现的次数 Solution1: 最容易想到的方法: class Solution { public:int NumberOf1Between1AndN_ ...

  6. 剑指offer——面试题21:包含min函数的栈

    剑指offer--面试题21:包含min函数的栈 Solution1: 辅助栈! 逻辑上要想清楚..但是用栈结构来实现栈,目的不知为何... class Solution { public:void ...

  7. 剑指Offer(第二版)面试题56:数组中数字出现的次数

    (尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/73609133冷血之心的博客) 剑指Offer(第二版)面试题56: ...

  8. 【Java】 剑指offer(4) 替换空格

    本文参考自<剑指offer>一书,代码采用Java语言.  更多:<剑指Offer>Java实现合集 题目 请实现一个函数,把字符串中的每个空格替换成"%20&quo ...

  9. 【Java】 剑指offer(67) 把字符串转换成整数

      本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 请你写一个函数StrToInt,实现把字符串转换成整数这个功能 ...

  10. Java《剑指Offer》面试题2:替换空格

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

最新文章

  1. 点击弹窗 input直接是待输入状态_第六课:你知道如何用两行代码做个弹窗吗?看这里...
  2. 小熊电器、九阳、苏泊尔们的“颜价比”被外卖小哥“打回原形”
  3. Spring Boot配置文件加载顺序
  4. python加密解密库openssl_OpenSSL和Python实现RSA Key公钥加密私钥解密
  5. python函数参数学习_python学习笔记-11.函数参数和返回值进阶
  6. 第15届Pwn2Own大赛确定目标和奖金
  7. vc下动态改变鼠标光标
  8. java string查找_Java lastIndexOf() 方法
  9. xpath获取标签的属性值_爬虫必备技能之网页解析库:xpath用法和实战
  10. 并发编程学习之阻塞队列BlockingQueue和LinkedBlockingQueue
  11. 视频教程-思科设备管理(CCNA魔鬼训练营系列)-思科认证
  12. asymptotic notation and recursion
  13. 2021最新软件测试面试题(含答案)
  14. CTFHUB刷题 密码口令/默认口令
  15. html新浪短域名api,新浪短网址API接口
  16. 测试分析——熟悉被测软件
  17. 装配作业指导书是什么?装配作业指导书主要包括哪些内容?
  18. IPTV和OTT概念,这几个你必须知道
  19. dpdk mempool的逻辑
  20. 要命啦!Word中快速录入大全,内含快捷键小技巧,快来一起学习!

热门文章

  1. KITTI数据集学习笔记
  2. 土木工程C语言题目,土木工程级C语言课程设计任务书.doc
  3. AtCoder Beginner Contest 203(Sponsored by Panasonic) D.Pond(二分+二维前缀和)
  4. 便宜运行linux芯片,个头小本事大:13 种 20 美元以下的树莓派 Zero 替代品 | Linux 中国...
  5. 研习社实战营--朱老师、猫老师,手把手带你入场打猎!
  6. 帝国模板本地安装测试时显示“不支持mysql数据”
  7. 尝试新增特殊分辨率(800x480)HDMI屏到RK3328(记录)
  8. 找工作的程序员应该这样优化简历【内附120套优质简历模板】
  9. 机房环境监控的现状与发展趋势!
  10. 阿里巴巴“新18罗汉”养成记