151. 反转字符串中的单词

发布时间:2024年01月15日

给你一个字符串?s?,请你反转字符串中?单词?的顺序。

单词?是由非空格字符组成的字符串。s?中使用至少一个空格将字符串中的?单词?分隔开。

返回?单词?顺序颠倒且?单词?之间用单个空格连接的结果字符串。

注意:输入字符串?s中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。

示例 1:

输入:s = "the sky is blue"
输出:"blue is sky the"

示例 2:

输入:s = " ?hello world ?"
输出:"world hello"
解释:反转后的字符串中不能存在前导空格和尾随空格。

示例 3:

输入:s = "a good ? example"
输出:"example good a"
解释:如果两个单词间有多余的空格,反转后的字符串需要将单词间的空格减少到仅有一个。

提示:

  • 1 <= s.length <= 104
  • s?包含英文大小写字母、数字和空格?' '
  • s?中?至少存在一个?单词

进阶:如果字符串在你使用的编程语言中是一种可变数据类型,请尝试使用?O(1)?额外空间复杂度的?原地?解法。

方法1:(6ms)

    public static String reverseWords(String s) {
        Stack<String> stack = new Stack<>();
        StringBuilder stringBuilder = new StringBuilder();
        String[] s1 = s.split(" ");
        for (String s2 : s1) {
            if (!"".equals(s2)){
                stack.push(s2);
            }
        }
        while (stack.size() > 0){
            stringBuilder.append(stack.pop()).append(" ");
        }
        return stringBuilder.toString().substring(0, stringBuilder.length() - 1);
    }

方法2:

文章来源:https://blog.csdn.net/linping_wong/article/details/135611938
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。