字符串中对单词反转

给定一个字符串,逐个翻转字符串中的每个单词。

示例:  

输入: "the sky is blue",

输出: "blue is sky the".

说明:

无空格字符构成一个单词。

输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。

如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。

很老套的题目了 

不使用split去掉两边的空格 利用循环和substring跳过中间单词之间的空格 用StringBulider接受 并转化为最终的字符串

代码如下 : 

public class ReverseWord 
{
	public static void main(String[] args) 
	{
		String s1 = "                           the                                 sky                 is red                    ";
		
		String s2 = Reverse(s1);

		System.out.println(s1);

		System.out.println(s2);
	}
	public static String Reverse(String task){
		
		//转化为字符数组
		char[] array = task.toCharArray();
		
		int left = 0;

		int right = task.length()-1;
		
		//去除两边空格
		while(left <= right && (task.charAt(left) == ' ') || (task.charAt(right) == ' ')){
			
			if(task.charAt(left) == ' '){
			
				left++;
			}
			if(task.charAt(right) == ' '){
			
				right--;
			}
		}

		//判断输入的字符串是否合法
		if(left > right){
			return "";
		}
		
		//保存反转之后的单词
		StringBuilder result = new StringBuilder();

		for(int i=right;i>=left;i--){
		
			char c =task.charAt(i);

			if(c == ' '){
				
				result.append(task.substring(i+1,right+1)).append(' ');

				while(i > left && task.charAt(i) == ' '){
				
					i--;
				}

				right = i;
			}
			System.out.println("当i = "+i+"时,输出:right:"+right+" left: "+left+" c:"+c+" result:"+result);
		}
		
		result.append(task.substring(left,right+1));

		return result.toString();//StringBulider 转换为一个字符串
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值