151. 翻转字符串里的单词
2022/2/19 23:15:41
本文主要是介绍151. 翻转字符串里的单词,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
双指针
class Solution { public String reverseWords(String s) { StringBuilder str = new StringBuilder(); int left = 0; int right = s.length() - 1; /** * 去掉字符串前后的空格 */ while (left <= s.length() - 1 && s.charAt(left) == ' '){ left++; } while (right >= 0 && s.charAt(right) == ' '){ right--; } /** * 去掉字符串中间多余的空格 */ for (int i = left; i <= right; i++) { char c = s.charAt(i); /** * 不是空格直接添加 * 如果是空格但是str最后一个元素不是空格,则可以添加 */ if (c != ' '){ str.append(c); } else if (c == ' ' && str.charAt(str.length() - 1) != ' '){ str.append(c); } } /** * 反转字符串 */ reverse(str, 0, str.length() - 1); /** * 反转单词 */ left = 0; for (int i = 0; i < str.length(); i++) { if (str.charAt(i) == ' '){ reverse(str, left, i - 1); left = i + 1; } /** * 最后一个单词后面没有空格无法判断,因此单独判断 */ else if (i == str.length() - 1){ reverse(str, left, i); } } return str.toString(); } /** * 定义反转字符串方法 */ public void reverse(StringBuilder str, int left, int right){ while (left < right){ char temp; temp = str.charAt(left); /** * setCharAt()方法修改StringBuilder对象值 */ str.setCharAt(left, str.charAt(right)); str.setCharAt(right, temp); left++; right--; } } } /** * 时间复杂度 O(n) * 空间复杂度 O(n) */
库函数
import java.util.Arrays; import java.util.Collections; class Solution { public String reverseWords(String s) { /** * trim()方法去除字符串前后空格 */ String str = s.trim(); /** * split()方法根据分隔符分割字符串为字符串数组,存在多个空格用" +" */ String[] strs = str.split(" +"); /** * 字符串数组转为列表,再用Collections.reverse()方法反转列表 */ Collections.reverse(Arrays.asList(strs)); /** * String.join()方法根据指定分隔符连接,形成新的字符串 */ return String.join(" ", strs); } }
https://leetcode-cn.com/problems/reverse-words-in-a-string/
这篇关于151. 翻转字符串里的单词的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-15鸿蒙生态设备数量超8亿台
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?