2024华为OD试题及答案-A010-单词倒序

题目描述

输入单行英文句子,里面包含英文字母,空格以及,.?三种标点符号,请将句子内每个单词进行倒序,并输出倒序后的语句。

输入描述

输入字符串S,S的长度 1 ≤ N ≤ 100

输出描述

输出倒序后的字符串

备注

标点符号左右的空格 ≥ 0,单词间空格>0

用例
输入yM eman si boB.
输出My name is Bob.
说明
输入woh era uoy ? I ma enif.
输出how are you ? I am fine.
说明

问题解析

给定一个单行英文句子,要求将句子中的每个单词进行倒序,然后输出倒序后的句子。标点符号保持不变,单词与标点符号之间的空格大于0。

输入描述

输入一个字符串 S,长度为 1 ≤ S ≤ 100。

输出描述

输出倒序后的字符串。

示例

  • 输入:yM eman si boB.
  • 输出:My name is Bob.

思路分析

  1. 使用 isalpha 函数判断字符是否为字母。
  2. 遍历字符串,将每个单词进行反转,遇到非字母字符时直接添加到结果中。
  3. 使用一个临时变量存储当前单词,遇到非字母字符时将临时变量反转并添加到结果中,然后清空临时变量。

实现步骤

  1. 定义一个字符串来存储当前单词。
  2. 遍历输入字符串,逐个字符处理。
  3. 如果字符是字母,则将其添加到当前单词中。
  4. 如果字符不是字母,则将当前单词反转并添加到结果中,然后添加该非字母字符,并清空当前单词。
  5. 最后处理剩余的单词(如果有),将其反转后添加到结果中。

C++ 实现

以下是实现该逻辑的 C++ 代码:

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

string reverseWords(const string& s) {
    string result;
    string word;
    
    for (char c : s) {
        if (isalpha(c)) {
            word += c;
        } else {
            reverse(word.begin(), word.end());
            result += word;
            result += c;
            word.clear();
        }
    }
    
    // 处理最后一个单词
    if (!word.empty()) {
        reverse(word.begin(), word.end());
        result += word;
    }

    return result;
}

int main() {
    string s;
    getline(cin, s);
    cout << reverseWords(s) << endl;
    return 0;
}

代码说明

  1. reverseWords 函数
    • 遍历字符串,将每个单词反转。
    • 遇到非字母字符时,将当前单词反转并添加到结果中。
    • 将非字母字符直接添加到结果中,并清空当前单词。
    • 最后处理剩余的单词(如果有),将其反转后添加到结果中。
  2. 主函数
    • 读取输入字符串。
    • 调用 reverseWords 函数并输出结果。

使用示例

  • 输入:yM eman si boB.
  • 输出:My name is Bob.

该程序能够根据输入的英文句子正确地反转每个单词,并输出处理后的句子。

Python 实现

def reverse_words(s):
    result = []
    word = []
    
    for c in s:
        if c.isalpha():
            word.append(c)
        else:
            if word:
                result.append(''.join(reversed(word)))
                word = []
            result.append(c)
    
    # 处理最后一个单词
    if word:
        result.append(''.join(reversed(word)))

    return ''.join(result)

def main():
    s = input().strip()
    print(reverse_words(s))

if __name__ == "__main__":
    main()

代码说明

  1. reverse_words 函数
    • 遍历字符串,将每个单词反转。
    • 遇到非字母字符时,将当前单词反转并添加到结果列表中。
    • 将非字母字符直接添加到结果列表中,并清空当前单词。
    • 最后处理剩余的单词(如果有),将其反转后添加到结果列表中。
  2. 主函数
    • 读取输入字符串。
    • 调用 reverse_words 函数并输出结果。

使用示例

  • 输入:yM eman si boB.
  • 输出:My name is Bob.

该程序能够根据输入的英文句子正确地反转每个单词,并输出处理后的句子。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值