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

*StringBuffer 扩容 str.setLength(扩容大小)

*思路:将原字符数组扩容至目标大小后,从后往前移动字符串,可大大减小移动次数

public class Solution {
    
     public String replaceSpace(StringBuffer str) {
             int originalLength = str.length();
             int capacityRequired = (calculateLength(str) << 1) + str.length();
             //在原大小上扩容2*空格数
             str.setLength(capacityRequired);
             for(int i=originalLength-1, j=capacityRequired-1; i >= 0; i--, j--){
                 if(str.charAt(i)==' '){
                     str.setCharAt(j-2, '%');
                     str.setCharAt(j-1,'2');
                     str.setCharAt(j, '0');
                     j=j-2;
                 }else{
                     str.setCharAt(j, str.charAt(i));
                 }
             }
             
            return str.toString().substring(0,capacityRequired);
        }
     private int calculateLength(StringBuffer str){
         int countSpace = 0;
         for(int i=0; i < str.length(); i++){
             if(str.charAt(i)==' '){
                 countSpace++;
             }
         }

【剑指offer】字符串替换的更多相关文章

  1. 代码随想录第八天 |344.反转字符串 、541. 反转字符串II、剑指Offer 05.替换空格 、151.翻转字符串里的单词 、剑指Offer58-II.左旋转字符串

    第一题344.反转字符串 编写一个函数,其作用是将输入的字符串反转过来.输入字符串以字符数组 s 的形式给出. 不要给另外的数组分配额外的空间,你必须原地修改输入数组.使用 O(1) 的额外空间解决这 ...

  2. 《剑指offer》替换空格

    本题来自<剑指offer> 替换空格 题目: 请实现一个函数,将一个字符串中的每个空格替换成“%20”.例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are% ...

  3. 菜鸟刷题路:剑指 Offer 05. 替换空格

    剑指 Offer 05. 替换空格 class Solution { public String replaceSpace(String s) { StringBuilder str = new St ...

  4. 【剑指offer】替换字符串中的空格

    转载请注明出处:http://blog.csdn.net/ns_code/article/details/25002199 剑指offer上的第四道题目,在九度OJ上測试通过,但还是有些问题.由于是用 ...

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

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

  6. 剑指offer——03替换空格

    题目描述 请实现一个函数,将一个字符串中的每个空格替换成“%20”.例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy.   注意事项: <剑指o ...

  7. Go语言实现:【剑指offer】替换空格

    该题目来源于牛客网<剑指offer>专题. 请实现一个函数,将一个字符串中的每个空格替换成"%20". 例如,当字符串为We Are Happy.则经过替换之后的字符串 ...

  8. 剑指offer:替换空格

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

  9. 剑指Offer 2. 替换空格 (字符串)

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

  10. 剑指offer 04_替换字符串中的空格

    #include <stdio.h> void ReplaceBlank(char string[],int length){ if(string == NULL || length == ...

随机推荐

  1. 第三次随笔--安装虚拟机及学习linux系统初体验

    第三次随笔--安装虚拟机及学习linux系统初体验 ·学习基于VirtualBox虚拟机安装Ubuntu图文教程在自己笔记本上安装Linux操作系统 首先按照老师的提示步骤进行VirtualBox虚拟 ...

  2. pip3 install scrap报错

    mac系统 pip3 install scrapy 失败 No local packages or working download links found for incremental>=1 ...

  3. java中实现Comparable接口实现自定义排序

    class Student implements Comparable{ String name; int gpa; @Override public int compareTo(Object arg ...

  4. EasyUI datagrid combox onchange 五

    $("#sTwo").combobox({ onChange: function (n,o) { n改变后,o改变前 }

  5. C++数组排序

    #include<stdio.h> #include<stdlib.h> #include<windows.h> #define SIZE 5 //数组中元素的数量 ...

  6. 实验吧—密码学——WP之 古典密码

    首先我们研究题目 1.古典密码 2.key值的固定结构 3.加密方式就在谜面里 首先看到这些数字我们就能想到ASCII,而且做题多了就能看出123是{:125是},所以得到字符串如下 OCU{CFTE ...

  7. js添加select中option

    1.js代码 $("#year").append("<option value="+value的值+">"+内容+"& ...

  8. CF613E Puzzle Lover

    题意 英文版题面 Problems Submit Status Standings Custom test .input-output-copier { font-size: 1.2rem; floa ...

  9. golang pprof 内存分析

    use pprof to get application  memory  useage add code in your main funciton import ( "log" ...

  10. spring 自己定义标签 学习二

    在上篇中写的仅仅支持写属性,不支持标签property的写法,可是假设有时候我们还想做成支持 property的使用方法,则能够在xsd中添加spring 自带的xsd引用   改动xsd文件例如以下 ...