力扣151.反转字符串中的单词
import java.util.Stack;
public class Solution {
// 定义一个方法,用于反转字符串中的单词顺序
public String reverseWords(String s) {
// 创建一个栈,用于存储单词
Stack<String> words = new Stack<>();
// 获取字符串的长度
int n = s.length();
// 遍历字符串中的每个字符
for (int i = 0; i < n; i++) {
// 创建一个StringBuilder对象,用于构建单词
StringBuilder sub = new StringBuilder();
// 当当前字符不是空格时,继续构建单词
while (i < n && s.charAt(i) != ' ') {
sub.append(s.charAt(i)); // 将当前字符添加到单词中
i++; // 移动到下一个字符
}
// 如果构建的单词不为空,则将其压入栈中
if (sub.length() > 0)
words.push(sub.toString());
}
// 创建一个StringBuilder对象,用于构建最终的反转后的字符串
StringBuilder ans = new StringBuilder();
// 将栈顶的单词添加到结果字符串中
ans.append(words.peek());
words.pop(); // 弹出栈顶空格元素
// 当栈不为空时,继续添加剩余的单词
while (!words.isEmpty()) {
ans.append(" "); // 在单词之间添加空格
ans.append(words.peek()); // 将栈顶的单词添加到结果字符串中
words.pop(); // 弹出栈顶元素
}
// 返回反转后的字符串
return ans.toString();
}
}