字符串中的空格替换问题(Java版)
2015-06-12 10:39
666 查看
解决方案一:时间复杂度为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中的static关键字
- java简单视频播放器笔记
- MyEclipse8.5/8.0 终极优化 .
- Java Lab(1)控制台下的人物PK
- java itext包使用异常问题
- java.lang.OutOfMemoryError异常解决方法
- Eclipse中进行JVM内存设置
- Eclipse项目莫名显示小红叉
- Vijava 学习笔记之(获取自定义规范定义的IP相关配置信息)
- Dalvik VM (DVM) 与Java VM (JVM)之间有哪些区别
- 实习生培训之Java环境搭建
- java读取properties配置文件,并解决中文乱码
- Spring
- Spring AOP 实现原理
- Java判断是否为闰年的方法示例
- Spring官网下载dist.zip的几种方法
- eclipse打开当前文件所在文件夹的两种方法
- Process: java.lang.UnsatisfiedLinkE
- java继承关系
- java 自定义类库