4.剑指offer 替换空格

版权声明:转载请标明出处 https://blog.csdn.net/easy_purple/article/details/83004850

题目:

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

思路:

从前往后复制会导致O(n2)的时间开销,而计算好空间,从后往前复制则只需O(n)的时间开销。 
先遍历一遍数组,计算出空格的个数。创建一个新数组,大小是原来数组大小再加上空格个数乘以2.声明两个下标,分别指向新旧数组的末尾,依次复制,遇到空格则处理空格。

代码:

package item1_10; 

public class item_4_replaceSpace {
	public static char[] item_4_replaceSpace(String str) {
		char[] chars = str.toCharArray();
		int spaceCount = 0;
		for (char cha : chars) {
			if (cha == ' ')
				spaceCount++;
		}
		char[] newChar = new char[chars.length + spaceCount * 2];
		int i=chars.length-1;
		int j=newChar.length-1;
		while(i!=j){
			while(chars[i]!=' '){
				newChar[j--]=chars[i--];
			}
			newChar[j--]='0';
			newChar[j--]='2';
			newChar[j--]='%';
			i--;
		}
		for(int x=i;x>=0;x--){
			newChar[x]=chars[x];
		}
		return newChar;
	}

	public static void main(String[] args) {
		String str="hello world I love you";
		System.out.println(new String(item_4_replaceSpace(str)));
	}

}

猜你喜欢

转载自blog.csdn.net/easy_purple/article/details/83004850
今日推荐