字符串中的空格替换问题(Java版)
解决方式一:时间复杂度为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版)的更多相关文章
- 将一个字符串中的空格替换成“%20”(C、Python)
将一个字符串中的空格替换成“%20” C语言: /* ----------------------------------- 通过函数调用,传地址来操作字符串 1.先计算出替换后的字符串的长度 2.从 ...
- 《剑指offer面试题4》替换空格——实现函数把字符串中每个空格替换成“%20”
思路: 例如把we are happy这个字符串中所有空格替换成"%20",最直接的做法是从头开始扫苗,遇到空格就替换,并且把空格后面的字符都顺序后移.复杂度O(n^2). 重要思 ...
- 把字符串中的空格替换为"%20"
这个需要注意的是字符串的结尾最后一个字符为'\0',并不是空字符,复制时要一块复制,算法思想就是先计算出字符串中总的空格数,然后 重新计算字符串的长度,由于"%20"为3个字符,比 ...
- 符号替换问题:请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
public class Solution { public String replaceSpace(StringBuffer str) { String str1=str.toString(); c ...
- 编程练习 将一个字符串中的空格替换为 "%20"
重点:字符串和元组一样, 是不可变对象. 所以将创建一个新的字符串对象,将改变后的字符加入到该新的对象里. 两种方法: 1.python的 replace函数 2.判断修改 def replace(a ...
- 替换空格-请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
class Solution { public: void replaceSpace(char *str,int length) { char *tmp; ; int i; ;i<length; ...
- 【剑指offer】将字符串中的空格替换成"%20"
#include <iostream> #include <string> using namespace std; char *ReplaceSpace(char *str, ...
- 【剑指offer】替换字符串中的空格
转载请注明出处:http://blog.csdn.net/ns_code/article/details/25002199 剑指offer上的第四道题目,在九度OJ上測试通过,但还是有些问题.由于是用 ...
- (CSDN迁移) 替换字符串中的空格
题目描述 请实现一个函数,将一个字符串中的空格替换成"%20".例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. public ...
随机推荐
- mkdi---创建目录。
mkdir命令用来创建目录.该命令创建由dirname命名的目录.如果在目录名的前面没有加任何路径名,则在当前目录下创建由dirname指定的目录:如果给出了一个已经存在的路径,将会在该目录下创建一个 ...
- msp430在ccsv5下出现的问题总结
一.内存问题 问题描写叙述,报错: program will not fit into available memory. placement with alignment fails for se ...
- 关于node的fs路径问题
我在写一个静态网页的服务器中遇到的一个问题,当时没理解就去查了 因为要访问最外部的json文件,就定义了一个模块读取文件,然后在外边的server.js中调用 但是一直路径错误. 我相信很多人和我一样 ...
- IBM Tivoli Netview在企业网络管理中的实践(附视频)
今天我为大家介绍的一款高端网管软件名叫IBM Tivoli NetView,他主要关注是IBM整理解决方案的用户,分为Unix平台和Windwos平台两种,这里视频演示的是基于Windows 2003 ...
- JQ 实施编辑 (clone()复制行||双击编辑)
//代码 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <titl ...
- require和import的使用
一.前言 ES6标准发布后,module成为标准,标准的使用是以export指令导出接口,以import引入模块,但是在我们一贯的node模块中,我们采用的是CommonJS规范,使用require引 ...
- mysql允许外部连接设置
错误信息: SQL Error (1130): Host ‘192.168.1.88’ is not allowed to connect to this MySQL server 说明所连接的用户帐 ...
- 00079_增强for循环
1.格式 /* * JDK1.5新特性,增强for循环 * JDK1.5版本后,出现新的接口 java.lang.Iterable * Collection开始继承Iterable * Iterabl ...
- BZOJ 3675 APIO2014 序列切割 斜率优化DP
题意:链接 方法:斜率优化DP 解析:这题BZ的数据我也是跪了,特意去网上找到当年的数据后面二十个最大的点都过了.就是过不了BZ. 看到这道题自己第一发DP是这么推得: 设f[i][j]是第j次分第i ...
- 【Material Design视觉设计语言】应用样式设计
作者:郭孝星 微博:郭孝星的新浪微博 邮箱:allenwells@163.com 博客:http://blog.csdn.net/allenwells Github:https://github.co ...