博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
替换空格
阅读量:4091 次
发布时间:2019-05-25

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

 

目录


 

一、题目描述

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

 

二、代码实现

1、String的replaceAll()方法

public class Solution {        public String replaceSpace(StringBuffer str) {        return str.toString().replaceAll(" ", "%20");    }    }

此方法的缺点是:replaceAll()方法采用了正则表达式,内部会各种创建、销毁对象,性能比较差。

2、新开辟一段空间

public class Solution {        public String replaceSpace(StringBuffer str) {    	String s = str.toString();                StringBuilder sb = new StringBuilder();        for (int i=0; i

3、原地修改

先将原来的StringBuffer变到替换之后的总长度,再从字符串的后面开始复制和替换。

public class Solution {    public String replaceSpace(StringBuffer str) {        //1、增加总长度        int P1 = str.length() - 1;    //原字符串的末尾        for (int i = 0; i <= P1; i++)            if (str.charAt(i) == ' ')                str.append("  ");        //2、从后往前复制        int P2 = str.length() - 1;    //新字符串的末尾        while (P1 >= 0 && P2 > P1) {            char c = str.charAt(P1--);            if (c == ' ') {                str.setCharAt(P2--, '0');                str.setCharAt(P2--, '2');                str.setCharAt(P2--, '%');            } else {                str.setCharAt(P2--, c);            }        }        return str.toString();    }    }

 

转载地址:http://dfnii.baihongyu.com/

你可能感兴趣的文章
Koa2框架原理解析和实现
查看>>
vue源码系列文章good
查看>>
你不知道的Virtual DOM
查看>>
VUE面试题总结
查看>>
写好JavaScript条件语句的5条守则
查看>>
原生JS中DOM节点相关API合集
查看>>
【TINY4412】U-BOOT移植笔记:(7)SDRAM驱动
查看>>
【TINY4412】U-BOOT移植笔记:(12)BEEP驱动
查看>>
单链表的修改和删除
查看>>
C++的三个基本特征:封装、继承、多态
查看>>
C++虚函数的总结
查看>>
什么是URL地址?
查看>>
C++多态的实现方式总结
查看>>
学习C++需要注意的问题
查看>>
C++模板
查看>>
C++双冒号(::)的用法
查看>>
【Unity】封装SQLite管理类
查看>>
【Unity】面试题整理
查看>>
【C#】如何实现一个迭代器
查看>>
【Unity】Destroy和DestroyImmediate的区别
查看>>