解决方式一:时间复杂度为O(n^2)

解决方式二:时间复杂度为O(n)



代码实现:

package string;

public class SpaceStringReplace2 {
//len为数组大小的总容量
public static void SpaceReplace(String strOld,int len){
char[] chs =new char[len];
char[] ch = strOld.toCharArray();
for (int i = 0; i < ch.length; i++) {
chs[i] = ch[i];
} int strOldLen = 0;
int blackString = 0;
if(chs==null || len<=0)
{
new NullPointerException();
} int i=0;
while(chs[i]!='\0'){
strOldLen++;
if(chs[i]==' '){
blackString++;
}
i++;
}
//将空格转换成%20字符的长度
int strNewLen = strOldLen + blackString*2;
if(strNewLen>len){
new ArrayIndexOutOfBoundsException();
} int indexOfOld=strOldLen;//指向'\0'
int indexOfNew=strNewLen; while(indexOfOld>0 && indexOfNew>indexOfOld){
if(chs[indexOfOld] == ' '){
chs[indexOfNew--] = '0';
chs[indexOfNew--] = '2';
chs[indexOfNew--] = '%';
}
else{
chs[indexOfNew--] = chs[indexOfOld];
}
--indexOfOld;
}
for (char c : chs) {
if(c=='\0'){
break;
}
System.out.print(c);
}
System.out.println();
} public static void main(String[] args) {
//StringBuilder str = new StringBuilder("We are happy.");
long timelast = System.currentTimeMillis();
String str = "We are happy.";
SpaceReplace(str,100);//We%20are%20happy. long timeafter = System.currentTimeMillis();
System.out.println(timeafter-timelast);
}
}

解决方式三JDK自带的字符串分割

代码实现:

package string;

public class SpaceStringReplace {
public static String SpaceReplace(String strOld){
String[] split = strOld.split(" ");
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < split.length-1; i++) {
stringBuilder.append(split[i]).append("%20");
}
stringBuilder.append(split[split.length-1]);
String strNew = stringBuilder.toString();
return strNew;
} public static void main(String[] args) {
//StringBuilder str = new StringBuilder("We are happy.");
String str = "We are happy.";
System.out.println(SpaceReplace(str));//We%20are%20happy.
}
}

字符串中的空格替换问题(Java版)的更多相关文章

  1. 将一个字符串中的空格替换成“%20”(C、Python)

    将一个字符串中的空格替换成“%20” C语言: /* ----------------------------------- 通过函数调用,传地址来操作字符串 1.先计算出替换后的字符串的长度 2.从 ...

  2. 《剑指offer面试题4》替换空格——实现函数把字符串中每个空格替换成“%20”

    思路: 例如把we are happy这个字符串中所有空格替换成"%20",最直接的做法是从头开始扫苗,遇到空格就替换,并且把空格后面的字符都顺序后移.复杂度O(n^2). 重要思 ...

  3. 把字符串中的空格替换为"%20"

    这个需要注意的是字符串的结尾最后一个字符为'\0',并不是空字符,复制时要一块复制,算法思想就是先计算出字符串中总的空格数,然后 重新计算字符串的长度,由于"%20"为3个字符,比 ...

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

    public class Solution { public String replaceSpace(StringBuffer str) { String str1=str.toString(); c ...

  5. 编程练习 将一个字符串中的空格替换为 "%20"

    重点:字符串和元组一样, 是不可变对象. 所以将创建一个新的字符串对象,将改变后的字符加入到该新的对象里. 两种方法: 1.python的 replace函数 2.判断修改 def replace(a ...

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

    class Solution { public: void replaceSpace(char *str,int length) { char *tmp; ; int i; ;i<length; ...

  7. 【剑指offer】将字符串中的空格替换成"%20"

    #include <iostream> #include <string> using namespace std; char *ReplaceSpace(char *str, ...

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

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

  9. (CSDN迁移) 替换字符串中的空格

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

随机推荐

  1. Mark Sweep GC

    目录 标记清除算法 标记阶段 深度优先于广度优先 清除阶段 分配 First-fit.Best-fit.Worst-fit三种分配策略 合并 优点 实现简单 与保守式GC算法兼容 缺点 碎片化 分配速 ...

  2. 【Uva 307】Sticks

    [Link]: [Description] 给你最多n个棍子; (n< = 64) 每根棍子长度(1..50) 问你这n根棍子,可以是由多少根长度为x的棍子分割出来的; x要求最小 [Solut ...

  3. Dynamics CRM2016 升级老版本号报“JavaScript Web 资源包括对 Microsoft Dynamics CRM 4.0 (2007) Web 服务终结点的引用”问题的解决的方法

    今天在新的server上部署了CRM2016 on-premises,并将CRM2015的数据库拷贝过来准备附加后升级,但在升级过程中遇到了例如以下错误.向导检測到了我的JavaScript Web ...

  4. Qt源码编译

    Qt源码编译 eryar@163.com Key words. Qt, 源码编译 1.Introduction 随着Qt版本升级,源码编译出来的库体积越来越大.如果只是用Qt来做GUI,Qt提供的预编 ...

  5. dlmalloc 2.8.6 源代码具体解释(5)

    本文章由vector03原创, 转载请注明出处. 邮箱地址: mmzsmm@163.com, 欢迎来信讨论.     3. 分配及实现 本章节介绍dlmalloc的分配算法和实现.由于存在多mspac ...

  6. crm2011处理save事件和获取当前窗口信息

    //防止保存记录,eContext:当前上下文对象 function My_PreventSaveFunction(eContext) {     eContext.getEventArgs().pr ...

  7. android 获取蓝牙已连接设备

    蓝牙如果手动配对并已连接,获取连接的设备: 1.检测连接状态: int a2dp = bluetoothAdapter.getProfileConnectionState(BluetoothProfi ...

  8. 2.CURL命令

    转自:https://blog.csdn.net/ligang2585116/article/details/46548617 curl是一种命令行工具,作用是发出网络请求,然后得到和提取数据,显示在 ...

  9. 84.friend友元类

    #include <iostream> using namespace std; //友元函数的主要作用就是访问私有变量 class myclass { public: friend cl ...

  10. 基于x86平台的Solaris安装视频(时长25分钟)

    基于X86平台的Solaris安装视频 本视频分为三个部分分别在附件中1.2.3(第三部分附件较大请在这里下载:http://down.51cto.com/data/263614) ,远程连接的视频由 ...