剑指offer5 替换空格

替换空格

描述

请实现一个函数,把字符串中的每个空格替换成“%20”。例如输入“We are happy”,则输出”We%20are%20happy”.

方法

一种是使用不改变字符串的方法,利用stringbuilder方法new一个,从原数组往外拿的过程中判断空格等等。原理很简单。记住StringBuilder。
另一种是改变元字符串,增加长度,再添加。

代码

public class ReplaceBlanks {
	
	// 用StringBuilder
	
		public static void main(String[] args) {
			String s = "we are happy";
			String s1 = " we are happy";
			String resultString1 = getResult(s);
			String resultString2 = getResult(s1);

			System.out.println(resultString1);
System.out.println(resultString1);
		}  
		
		public static String getResult(String s) {
			StringBuilder sb = new StringBuilder();
			for(int i=0;i<s.length();i++) {
				if(s.charAt(i)==' ') {
					sb.append("%20");
				}else {
					sb.append(s.charAt(i));
				}
			}
			return sb.toString();
		}
	}
public class ReplaceBlanks {
//由于java的字符数组没有结束符,所以需要多传入个原始长度
public static void replaceBlank(char[] data,int length){
int newLength = length;
for(int i=0;i<length;i++){
if(data[i]==' ')
newLength += 2;
}
for(int indexOfOld = length-1,indexOfNew=newLength-1;indexOfOld>=0 && indexOfOld!=indexOfNew;indexOfOld--,indexOfNew--){
if(data[indexOfOld]==' '){
data[indexOfNew--] = '0';
data[indexOfNew--] = '2';
data[indexOfNew] = '%';
}
else{
data[indexOfNew] = data[indexOfOld];
}
}
}
public static void main(String[] args){
char[] predata = "We are happy.".toCharArray();
char[] data = new char[20];
for(int i=0;i<predata.length;i++)
data[i] = predata[i];
System.out.println(data);
replaceBlank(data,13);
System.out.println(data);
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值