【剑指offer】替换空格
2016-06-12 16:05
316 查看
题目:
将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
分析:
String为不可变类,需要对String进行内容操作时,可以考虑转为char[]或StringBuffer。
(1)操作char[]方式:
需要考虑数组元素移动造成的覆盖,因此考虑从后往前,将字符数组移动到新长度的数组中。
(2)StringBuffer方式:
A、使用可变类StringBuffer的追加append()函数,实现内容分情况追加(字符串内容 或 空格替换字符)。
B、使用repalce()函数,实现内容替换。
实现:
(1)StringBuffer实现:
追加方式:
替换方式:
(2)操作char[]实现:
将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
分析:
String为不可变类,需要对String进行内容操作时,可以考虑转为char[]或StringBuffer。
(1)操作char[]方式:
需要考虑数组元素移动造成的覆盖,因此考虑从后往前,将字符数组移动到新长度的数组中。
(2)StringBuffer方式:
A、使用可变类StringBuffer的追加append()函数,实现内容分情况追加(字符串内容 或 空格替换字符)。
B、使用repalce()函数,实现内容替换。
实现:
(1)StringBuffer实现:
追加方式:
<span style="font-family:Microsoft YaHei;font-size:14px;">public class Solution { public String replaceSpace(StringBuffer str) { if(str==null){ return null; } StringBuffer sb = new StringBuffer(); char [] chars = str.toString().toCharArray(); for(int i=0;i<chars.length;i++){ if(chars[i]==' '){ sb.append("%20"); }else{ sb.append(chars[i]); } } return sb.toString(); } }</span>
替换方式:
<span style="font-family:Microsoft YaHei;font-size:14px;">public String replaceSpace(StringBuffer str) { if(str==null) { return null; } for(int i=0;i<str.length();i++) { char c = str.charAt(i); if(c==' ') { str.replace(i,i+1,"%20"); } } String newstr = str.toString(); return newstr; }</span>
(2)操作char[]实现:
<span style="font-family:Microsoft YaHei;font-size:14px;">public String ReplaceSpace(String str) { int len = str.length(); if(str==null || len <=0) { return null; } int spaceNum = 0; for(int i=0;i<len;i++){ if(str.charAt(i)== ' '){ spaceNum++; } } char[] chars = new char[spaceNum*2+len]; for(int i=0,j=0;i<len;i++){ if(str.charAt(i)== ' '){ chars[j++] = '%'; chars[j++] = '2'; chars[j++] = '0'; }else{ chars[j++] = str.charAt(i); } } return new String(chars); }</span>
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android之获取手机上的图片和视频缩略图thumbnails
- android string.xml文件中的整型和string型代替
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序