题目描述
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
解题思路
1,使用stringBuffer辅助解决
2,不使用辅助类,字符替换解决
代码实现
/** * */
package 字符串;
/** * <p> * Title:ReplaceSpace * </p> * <p> * Description: * </p> * * @author 田茂林 * @data 2017年8月23日 下午8:14:37 */
public class ReplaceSpace {
// ============================================================使用辅助的StringBuffer
public String replaceSpace(StringBuffer str) {
char[] strs = str.toString().toCharArray();
StringBuffer s = new StringBuffer();
for (int i = 0; i < strs.length; i++) {
if (strs[i] != ' ')
s.append(strs[i]);
else {
s.append("%20");
}
}
return s.toString();
}
// ============================================================不使用辅助方案
public String replaceSpaceSuper(StringBuffer str) {
char[] strs = str.toString().toCharArray();
int count = 0;
// 统计出所有空格个数
for (int i = 0; i < strs.length; i++) {
if (strs[i] == ' ') {
count++;
}
}
//获取新字符串数组总长度
int len = 2 * count + strs.length;
char[] newstrs = new char[len];
int i = 0;
int j = 0;
//遇到空格就把字符替换进去
while (i < len && j < strs.length) {
if (strs[j] == ' ') {
newstrs[i++] = '%';
newstrs[i++] = '2';
newstrs[i++] = '0';
j++;
}else{
newstrs[i++] = strs[j++];
}
}
String s = new String(newstrs);
return s;
}
public static void main(String[] args) {
ReplaceSpace r = new ReplaceSpace();
StringBuffer str = new StringBuffer("We Are Happy");
System.out.println(r.replaceSpace(str));
System.out.println(r.replaceSpaceSuper(str));
}
}