欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 新车 > Leetcode 反转字符串中的单词

Leetcode 反转字符串中的单词

2024/10/23 5:59:20 来源:https://blog.csdn.net/coldasice342/article/details/143100002  浏览:    关键词:Leetcode 反转字符串中的单词

在这里插入图片描述
这个Java代码解决了“反转字符串中的单词顺序”的问题,具体思想如下:

1. 去除字符串首尾的空格

  • s.trim() 方法用于去除输入字符串 s 中的前导和尾随空格。这样做是为了防止在后续步骤中多余的空格对结果产生影响。

2. 按空格分割字符串

  • s.split("\\s+") 这一行使用正则表达式 \\s+ 来分割字符串。\\s+ 表示“一个或多个空格”,即使原字符串中存在多个连续的空格,这个表达式也可以将它们当作一个空格来处理。分割后的结果是一个字符串数组,每个元素都是一个单词。

3. 倒序拼接单词

  • StringBuilder result = new StringBuilder(); 创建一个可变的字符串对象 result,用于存储反转后的结果。
  • for (int i = words.length - 1; i >= 0; i--) 循环遍历分割出的单词数组,循环从数组最后一个单词开始,依次将单词添加到 result 中,这样就实现了单词的倒序排列。
  • result.append(" "); 仅在每个单词之间添加一个空格,确保输出中单词之间只有一个空格。为了避免最后一个单词后面多出空格,if (i > 0) 判断当前是否是最后一个单词。

4. 返回结果

  • 最后使用 result.toString()StringBuilder 中的内容转换为字符串,并返回反转后的字符串。

主要算法思想总结:

  • 字符串分割和反转:通过正则表达式分割字符串,并利用倒序循环来重组字符串,从而实现单词顺序的反转。
  • 去除多余空格trim()split("\\s+") 的组合确保了字符串中的多余空格被处理好,最终输出的单词之间只留一个空格。
  • 时间复杂度:该算法的时间复杂度为 O(n),其中 n 是字符串的长度,因为需要遍历字符串和数组来处理每个单词。

适用场景:

此算法能够有效处理输入字符串中的前导、尾随空格以及多个单词之间的多余空格,是一种高效且简单的解决方法。

class Solution {public String reverseWords(String s) {s = s.trim();//将两端进行处理String[] words = s.split("\\s+"); //使用正则表达式按空格分割,\\s+可以按照1或多个空格分割StringBuilder result = new StringBuilder();for(int i = words.length - 1; i >= 0; i--) {result.append(words[i]);if(i > 0) {result.append(" ");}}s = result.toString();return s;}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com