leetcode:151. 翻转字符串里的单词

柔光的暖阳◎ 2021-09-28 15:14 377阅读 0赞

给定一个字符串,逐个翻转字符串中的每个单词。

示例 1:

  1. 输入: "the sky is blue"
  2. 输出: "blue is sky the"

示例 2:

  1. 输入: " hello world! "
  2. 输出: "world! hello"
  3. 解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。

示例 3:

  1. 输入: "a good example"
  2. 输出: "example good a"
  3. 解释: 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。

说明:

  • 无空格字符构成一个单词。
  • 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。
  • 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。
  1. package LeetCode;
  2. import java.util.Stack;
  3. public class ReverseWords {
  4. public String reverseWords(String s) {
  5. boolean juge = false;
  6. String str = "";
  7. Stack<String> stack = new Stack<>();
  8. for (int i = 0; i < s.length(); i++) {
  9. char c = s.charAt(i);
  10. if (c == ' ') {
  11. if (juge) {
  12. if (str != null) {
  13. stack.push(str);
  14. str = "";
  15. } else {
  16. continue;
  17. }
  18. } else {
  19. continue;
  20. }
  21. } else {
  22. juge = true;
  23. str += c;
  24. }
  25. }
  26. if (!str.equals(" ") && !str.equals("") && str.length() > 0) {
  27. stack.push(str);
  28. }
  29. StringBuffer res = new StringBuffer();
  30. while (!stack.isEmpty()) {
  31. String j = stack.pop();
  32. if (!j.equals(" ") && !j.equals("")) {
  33. res.append(j);
  34. if (!stack.isEmpty())
  35. res.append(" ");
  36. }
  37. }
  38. return res.toString();
  39. }
  40. public static void main(String[] args) {
  41. ReverseWords r = new ReverseWords();
  42. System.out.println(r.reverseWords(" hello world! "));
  43. }
  44. }

发表评论

表情:
评论列表 (有 0 条评论,377人围观)

还没有评论,来说两句吧...

相关阅读