《剑指offer》练习-面试题5-替换空格

原创 2018年04月15日 16:35:59

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

package offer;

import java.util.Scanner;

public class Test6 {
	public static String replaceBlank(String input) {
		if (input == null)
			return null;

		StringBuffer output = new StringBuffer();
		for (int i = 0; i < input.length(); i++) {
			if (input.charAt(i) == ' ') {
				output.append("%");
				output.append("2");
				output.append("0");
			} else {
				output.append(input.charAt(i));
			}
		}
		return String.valueOf(output);
	}

	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.println("请输入字符串:");
		String s = input.nextLine();
		System.out.println(replaceBlank(s));
	}
}

StringBuffer

当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。

和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。

StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。

由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。

package offer;

import java.util.Scanner;

public class Test6 {
	public static String replaceSpace(StringBuffer str) {
		int length = str.length();
		int spacenum = 0;

		// 统计空格字符个数
		for (int i = 0; i < length; i++) {
			if (str.charAt(i) == ' ')
				spacenum++;
		}

		int lengthNew = length + spacenum * 2;
		str.setLength(lengthNew);
		int index = length - 1;
		int indexNew = lengthNew - 1;

		for (; index >= 0; index--) {
			if (str.charAt(index) == ' ') {
				str.setCharAt(indexNew--, '0');
				str.setCharAt(indexNew--, '2');
				str.setCharAt(indexNew--, '%');
			} else {
				str.setCharAt(indexNew--, str.charAt(index));
			}
		}
		return str.toString();
	}

	public static void main(String[] args) {
		StringBuffer s = new StringBuffer();
		s.append("We are the world!");
		System.out.println(replaceSpace(s));
	}
}


PHP面试题集锦

这是Tom老师精心收集的面试题。本课程中的面试题都是真实公司出的题目。也是在csdn网站上独家首发的PHP面试题。面试题中不仅仅有PHP、html 和javascript编程知识的介绍。也有面试技巧的介绍
  • 2017年12月06日 18:38

剑指Offer面试题5:替换空格

思路: 1.找空格,确定新字符数组长度 2.从后往前字符数组判断 3.如果为空格,新旧字符数组复制 4.非空...
  • lwl2014100338
  • lwl2014100338
  • 2018-01-19 18:17:04
  • 54

剑指offer(C++)——替换空格

题目描述 请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 思路:简单暴力解法,从...
  • YF_Li123
  • YF_Li123
  • 2017-04-21 17:08:47
  • 827

剑指Offer面试题4(Java版),替换空格

题目:请实现一个函数,把字符串中的每个空格替换成“%20”。例如输入“We are happy",则输出”We%20are%20happy". 原因:在网络编程中,如果URL参数中含有特殊字符,如:空...
  • jsqfengbao
  • jsqfengbao
  • 2015-07-24 17:58:17
  • 2269

【剑指Offer】替换空格

题目描述请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。解题思路遍历字符串,遇到空格,就把空格...
  • zgljl2012
  • zgljl2012
  • 2015-09-16 19:49:41
  • 1696

【剑指offer】-替换空格

题目:请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 解析:如果从前往后替换字符串中的空格,...
  • Kevin_zhai
  • Kevin_zhai
  • 2015-11-02 15:04:09
  • 1237

剑指offer之空格替换(Python)

请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。...
  • u010636181
  • u010636181
  • 2017-10-14 17:19:28
  • 61

JAVA实现替换空格(《剑指offer》牛客网StringBuffer)

最近在刷《剑指offer》里的编程题,但是网上关于《剑指offer》的解答多半是C或者C++的,而且官方(作者)也是在用C++进行讲解,这里自己用java写了一些题目的解答代码(当然也有部分是借鉴了网...
  • xiaopihaierletian
  • xiaopihaierletian
  • 2017-04-24 16:33:29
  • 380

剑指offer算法 java实现 替换字符串空格

剑指offer算法 java实现
  • believejava
  • believejava
  • 2014-08-19 15:24:56
  • 7720

剑指offer面试题5-替换空格-java

题目:请实现一个函数,把字符串中的每个空格替换成“%20”。例如输入“We are happy”,则输出”We%20are%20happy”. 原因:在网络编程中,如果URL参数中含有特殊字符,如:...
  • u012562297
  • u012562297
  • 2017-06-07 14:43:05
  • 236
收藏助手
不良信息举报
您举报文章:《剑指offer》练习-面试题5-替换空格
举报原因:
原因补充:

(最多只允许输入30个字)