返回

释放文本的潜能:LeetCode #151 颠倒字符串中的单词指南

见解分享

颠倒字符串中的单词:LeetCode 第 151 题

理解问题

在编程世界中,字符串操作是不可避免的。LeetCode 第 151 题就提出了一个有趣的挑战:反转字符串中的单词。这意味着我们将句子中的单词顺序反转,同时保持单词本身的顺序不变。以 "hello world" 为例,反转后变为 "world hello",而不是 "dlrow olleh"。

解决方法

理解问题后,我们可以开始解决它。最直接的方法是将字符串拆分为单词列表,然后反转列表最后将单词重新连接为字符串。

代码实现

Python

def reverse_words(string):
  # 按空格分隔单词
  words = string.split()

  # 反转单词列表
  words.reverse()

  # 重新连接单词
  return " ".join(words)

Java

public String reverseWords(String string) {
  String[] words = string.split(" ");
  StringBuilder result = new StringBuilder();

  for (int i = words.length - 1; i >= 0; i--) {
    result.append(words[i]);
    if (i != 0) {
      result.append(" ");
    }
  }

  return result.toString();
}

C++

string reverseWords(string string) {
  vector<string> words;
  stringstream ss(string);
  string word;

  // 按空格分隔单词
  while (ss >> word) {
    words.push_back(word);
  }

  // 反转单词列表
  reverse(words.begin(), words.end());

  // 重新连接单词
  string result;
  for (string word : words) {
    result += word + " ";
  }

  result.pop_back();
  return result;
}

示例

让我们通过一些示例来测试我们的解决方案:

输入:"hello world"
输出:"world hello"

输入:"a good   example"
输出:"example good a"

输入:""
输出:""

提示

  • 考虑字符串中可能存在多个连续空格的情况。
  • 对于空字符串,返回空字符串。
  • 使用反转算法反转单词列表。

延伸阅读

常见问题解答

  1. 反转字符串中的单词与反转字符串有什么区别?
    反转字符串中的单词只改变单词的顺序,而反转字符串改变字符的顺序。

  2. 为什么我们要使用单词列表来解决问题?
    使用单词列表允许我们轻松地反转单词顺序,而无需逐个字符地处理字符串。

  3. 如何在 Java 中使用反转算法?
    Java 中可以使用 Collections.reverse() 方法来反转列表。

  4. 如何处理字符串中有多个连续空格?
    我们可以使用正则表达式 \s+ 来匹配多个连续空格,然后替换为单个空格。

  5. 反转字符串中的单词在实际应用程序中有哪些用途?
    反转字符串中的单词在文本处理、数据清理和自然语言处理等领域有广泛的应用。