字符串中单词的反转

问题描述:
把一个字符串句子中的每一个单词都进行反转。
样例输入:
hello world
ni hao
you are a good boy
你是一个好孩子
样例输出:
world hello
hao ni
boy good a are you
子孩好个一是你
代码:
public static void main(String[] args) {
		
		String string = "hello world";
		System.out.println("原单词:" + string + "\t 逆序之后单词:"+swapString(string));
		
		String string2 = "ni hao";
		System.out.println("原单词:" + string2 + "\t\t 逆序之后单词:"+swapString(string2));
		
		String string3 = "you are a good boy";
		System.out.println("原单词:" + string3 + "\t 逆序之后单词:"+swapString(string3));
		
		String string4 = "你 是 一 个 好 孩 子";
		System.out.println("原单词:" + string4 + "\t 逆序之后单词:"+swapString(string4));
		
	}

	/*
	 * 	实现整个字符串反正
	 * 	input:	abcdefg
	 * 	output:	gfedcba
	 */
	private static void swap(char[] c, int i, int j) {
		while (i < j) {// 如果i小于j就一直交换
			char tmp = c[j]; // 定义中间变量,初始记录最后字符
			c[j] = c[i];
			c[i] = tmp;
			i++;
			j--;

		}
	}
	
	/*
	 * 	实现字符串单词的反转
	 * 	input:	hello world
	 * 	output: world hello
	 */
	private static String swapString(String s) {
		// 将字符串s变换为字符数组
		char[] c = s.toCharArray();

		// 先对整个字符串进行字符反转操作
		swap(c, 0, c.length - 1);
		
		// 对每个单词以" "为分割点进行字符反转操作
		int start = 0;
		for (int i = 1; i < c.length; i++) {
			if(c[i] == ' ') {
				swap(c, start, i - 1);// 对逆序单词进行反转之后就是正常的单词了
				start = i+1; // 对一个逆序单词反转之后进行下一个单词的开始
			}
		}
		// 最后反转最后一个逆序单词
		swap(c, start, c.length-1);
		
		// 将反转后的单词序列输出
		return new String(c);
	}
程序执行结果:

注意最后一行的输入中文中间是有“空格”的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bu Sir

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值