【LeetCode】Reverse Words in a String

本文介绍了一种算法,用于反转字符串中的单词顺序,并确保相邻单词间只有一个空格,同时去除字符串两端的空白字符。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:

Given an input string, reverse the string word by word.

For example,

Given s = "the sky is blue",

return "blue is sky the".

解答:

首先理解题意很重要,不然会浪费很多时间在细节上,先理清题目隐藏的一些细节:1,字符串的两端的空格要去掉;2,单词间只保留一个空格,如以下测试用例:

     "            "
        "a        "
        "             a        "
        "             a"
        "             a                     b        "
        "             a b       "
        "             a  b"
        "a  b      "
        "             a  b                c d e f                          g      "
代码如下:

class Q151_ReverseWords{

	//ac
	public static String reverseWords(String s){
		if(s=="") return "";
		String str="";
		int start=0,end;
		for(int i=s.length()-1;i>=0;){
			while(i>=0&&s.charAt(i)==' ') 
				i--;
			if(i!=start) str+=" ";
			end=i;
			while(i>=0&&s.charAt(i)!=' ') i--;
			start=i;
			str+=s.substring(start+1,end+1);
		}
		//去除两端空格
		start=0;
		end=str.length()-1;
		while(start<=end&&str.charAt(start)==' ')
			start++;
		while(start<=end&&str.charAt(end)==' ')
			end--;
		return str.substring(start,end+1);
	}
	public static void main(String[] args){
		String str="   a   b    ";
		System.out.print(str);
		System.out.println("--");
		System.out.print(reverseWords(str));
		System.out.println("--");
	}
}

---EOF---




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值