题解 | #单词倒排#

单词倒排

https://www.nowcoder.com/practice/81544a4989df4109b33c2d65037c5836

解题思路

  1. 首先将输入字符串中的非字母字符替换为空格
  2. 按空格分割字符串得到单词数组
  3. 反转单词数组
  4. 用空格连接单词数组输出结果

代码

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;

int main() {
    string s;
    getline(cin, s);
    
    // 将非字母字符替换为空格
    for(char& c : s) {
        if(!isalpha(c)) {
            c = ' ';
        }
    }
    
    // 分割单词
    vector<string> words;
    string word;
    for(int i = 0; i < s.length(); i++) {
        if(s[i] != ' ') {
            word += s[i];
        } else if(!word.empty()) {
            words.push_back(word);
            word = "";
        }
    }
    if(!word.empty()) {
        words.push_back(word);
    }
    
    // 反转单词顺序
    reverse(words.begin(), words.end());
    
    // 输出结果
    for(int i = 0; i < words.size(); i++) {
        cout << words[i];
        if(i != words.size() - 1) {
            cout << " ";
        }
    }
    
    return 0;
}
def word_reverse():
    # 读取输入
    s = input()
    
    # 将非字母字符替换为空格
    s = ''.join(' ' if not c.isalpha() else c for c in s)
    
    # 分割并反转单词
    words = s.split()
    words.reverse()
    
    # 输出结果
    print(' '.join(words))

if __name__ == "__main__":
    word_reverse()
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s = sc.nextLine();
        
        // 将非字母字符替换为空格
        s = s.replaceAll("[^a-zA-Z]", " ");
        
        // 分割单词并反转
        String[] words = s.trim().split("\\s+");
        StringBuilder result = new StringBuilder();
        
        // 倒序拼接单词
        for(int i = words.length - 1; i >= 0; i--) {
            result.append(words[i]);
            if(i > 0) {
                result.append(" ");
            }
        }
        
        System.out.println(result.toString());
    }
}

算法及复杂度

  • 算法:字符串处理 + 数组反转
  • 时间复杂度:,其中 n 为输入字符串长度
  • 空间复杂度:,需要存储分割后的单词数组
全部评论

相关推荐

不愿透露姓名的神秘牛友
04-30 11:43
春招失败、父母离婚,好像我的人生一团糟,一年来压力大到常常崩溃。不知道能跟谁聊,朋友其实对我非常好,但是她无意中表达出来的家庭幸福都会刺痛到我……和ai聊天,我的未来在更高处,不在楼下,忍不住爆哭😭
youngfa:害,妹妹,我是一个研究生(很上进很想找到好工作的那种),但去年因为生病回家休养错过了秋招(当时对我的冲击也是非常大的),这学期返校来了也是把论文盲审交了后才开始找工作,现在也是一个offer没有,但我就没有像你一样把这个阶段性的事情绑定到人生上,人生不仅很长,也很广阔,先停下来,放松一下哦。不要被外部环境灌输的思维操控了,好好爱自己!
点赞 评论 收藏
分享
03-10 20:35
已编辑
武汉大学 C++
点赞 评论 收藏
分享
ResourceUtilization:我嘞个董事长
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务