admin管理员组文章数量:1516870
字符串中的单词反转(反转单词序列),剑指offer,力扣
目录
我们直接看题解吧:
解题方法:
审题目+事例+提示:
思路(双指针):
代码实现:
题目地址:
LCR 181. 字符串中的单词反转 - 力扣(LeetCode)
今天刷字符串中的单词反转(反转单词序列),大家有兴趣可以点上看看题目要求,试着做一下。
我们直接看题解吧:
解题方法:
第一个方法双指针,
第二个方法分割+倒序。
审题目+事例+提示:
·message可能前后有空格,或者单词之间存在多个空格,
但返回数组只能单词之间只有一个空格
·未说不可原地更改数组
思路(双指针):
- 倒序遍历数组,创建双指针,i、j均指向数组尾部,创建StringBuilder
- 每确定一个单词左右边界,就添加到res中
- 拼接字符列表,返回字符串 。
代码实现:
class Solution {public String reverseMessage(String message) {//使用trim()方法删去首尾格message = message.trim(); //两个指针均指向数组尾部 int j = message.length() - 1, i = j;//创建新字符串StringBuilder()StringBuilder res = new StringBuilder();while (i >= 0) {// 搜索空格,并逐个空格跳过while (i >= 0 && message.charAt(i) != ' ') i--; // 利用subStirng()截取对应单词,利用append()方法添加单词res.append(message.substring(i + 1, j + 1) + " "); while (i >= 0 && message.charAt(i) == ' ') i--; // 跳过单词间空格j = i; // j 指向下个单词的尾字符}return res.toString().trim(); // 转化为字符串,去调首尾空格并返回}
}
代码(方法2):
class Solution {public String reverseMessage(String message) {String[] strs = message.trim().split(" "); // 删除首尾空格,分割字符串StringBuilder res = new StringBuilder();for (int i = strs.length - 1; i >= 0; i--) { // 倒序遍历单词列表if(strs[i].equals("")) continue; // 遇到空单词则跳过res.append(strs[i] + " "); // 将单词拼接至 StringBuilder}return res.toString().trim(); // 转化为字符串,删除尾部空格,并返回}
}
本文标签: 字符串中的单词反转(反转单词序列),剑指offer力扣
版权声明:本文标题:字符串中的单词反转(反转单词序列),剑指offer,力扣 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.betaflare.com/biancheng/1700229784a291478.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。


发表评论