替换空格
时间限制:1秒 空间限制:32768K
本题知识点:字符串
题目描述
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
思路及代码
- Java:Java中String有替换函数replace(),只需要将StringBuffer转换为String对象即可。
public class Solution {
public String replaceSpace(StringBuffer str) {
if(str == null){
return null;
}else{
return str.toString().replace(" ","%20");
}
}
}
附上replace()函数代码
//[CharSequence的详解](https://www.cnblogs.com/skywang12345/p/string01.html)
public String replace(CharSequence target, CharSequence replacement) {
if (target == null) {
throw new NullPointerException("target == null");
}
if (replacement == null) {
throw new NullPointerException("replacement == null");
}
String replacementStr = replacement.toString();
String targetStr = target.toString();
final int len = length();
if (targetStr.isEmpty()) {
StringBuilder sb = new StringBuilder(replacementStr.length() * (len + 2) + len);
sb.append(replacementStr);
for (int i = 0; i < len; ++i) {
sb.append(charAt(i));
sb.append(replacementStr);
}
return sb.toString();
}
int lastMatch = 0;
StringBuilder sb = null;
for (;;) {
int currentMatch = indexOf(this, targetStr, lastMatch);
if (currentMatch == -1) {
break;
}
if (sb == null) {
sb = new StringBuilder(len);
}
sb.append(this, lastMatch, currentMatch);
sb.append(replacementStr);
lastMatch = currentMatch + targetStr.length();
}
if (sb != null) {
sb.append(this, lastMatch, len);
return sb.toString();
} else {
return this;
}
}
若不使用replace()函数,可采用字符串拼接
public class Solution {
public String replaceSpace(StringBuffer str) {
if(str==null){
return null;
}
StringBuilder s = new StringBuilder();
for(int i=0;i<str.length();i++){
if(str.charAt(i)==' '){
s.append('%');
s.append('2');
s.append('0');
}else{
s.append(str.charAt(i));
}
}
return s.toString();
}
}