【5. 替换空格】剑指offer-JAVA实现

145 阅读1分钟

题目描述 将一个字符串中的空格替换成 "%20"。

示例

Input:
"A B"
 
Output:
"A%20B" 

思路:每次变化都会让字符串增加两个位置,先找出所有需要添加位置的个数,加到最后。然后建立一个p1指向原字符串尾部,p2指向新字符串尾部。将p1粘贴到p2位置,遇到' '处理即可。

代码:

public class Five {
	public void replace(StringBuffer sb) {
		int p1=sb.length()-1;
		for(int i=0;i<p1;i++)
			if(sb.charAt(i)==' ') 
				sb = sb.append("  "); 
		int p2 = sb.length()-1;
		for(int i=p1;i>=0;i--) {
			if(sb.charAt(i)!=' ') {
				sb.setCharAt(p2--, sb.charAt(i));
			}else {
				sb.setCharAt(p2--, '0');
				sb.setCharAt(p2--, '2');
				sb.setCharAt(p2--, '%');
			}
		}
		System.out.println(sb);
			
		}
		
	} 

总结:不熟悉String StringBuffer StringBuilder 可变/不可变

StringBuffer api