2023华为OD机试真题-单词倒序(JAVA、Python、C++)

题目描述:

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

输入描述:

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

输出描述:

输出逆序后的字符串

补充说明:

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

 收起

示例1

输入:

yM eman si boB.
输出:

My name is Bob.
说明:

示例2

输入:

woh era uoy ? I ma enif.
输出:

how are you ? I am fine.
 

import sys
 
res_list = []
 
char_list = [".", ",", "?"]
 
line = input()
 
word_list = line.split(" ")
 
for word in word_list:
    if "." in word or "," in word or "?" in word and len(word) > 1:
        char1 = word[-1:]
        char2 = word[0]
        if char1 in char_list and char2 not in char_list:
            res_list.append(word[:-1][::-1] + char1)
        if char1 not in char_list and char2 in char_list:
            res_list.append(char2 + word[1:][::-1])
        if char1 in char_list and char2 in char_list:
            res_list.append(char2 + word[1:-1][::-1] + char1)
 
    if word in char_list:
        res_list.append(word)
    if word not in char_list and "." not in word and "," not in word and "?" not in word:
        res_list.append(word[::-1])
print(" ".join(res_list))
import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
         
        String str = sc.nextLine();
        String[] str1 = str.split(" ");
        for(int i=0; i < str1.length; i++) {
            String str2 = str1[i];
            String str3 = "";//保存单词
            String str4 = "";//保存标点
            for(int j=0; j < str2.length(); j++) {
                if(str2.charAt(str2.length() - 1 - j) != '.' &&
                  str2.charAt(str2.length() - 1 - j) != ',' &&
                  str2.charAt(str2.length() - 1 - j) != '?') {
                    str3 += str2.charAt(str2.length() - 1 - j);
                } else {
                    str4 += str2.charAt(str2.length() - 1 - j);
                }
            }
            str1[i] = str3 + str4;
        }
        for(int i=0; i < str1.length; i++) {
            System.out.print(str1[i] + " ");
        }
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
通信误码是通信过程中由于噪声、信号衰减或其他干扰因素引起的信号错误。解决通信误码的问题是通信领域中非常重要的一项任务。下面是我基于Python的解答: 首先,我们需要定义一个函数来计算两个二进制数字之间的汉明距离,即不同位置的比特数。可以通过将两个二进制数字进行逐位比较来实现。如果两个比特值不同,则汉明距离加1。代码如下: ```python def hamming_distance(bin_1, bin_2): distance = 0 for i in range(len(bin_1)): if bin_1[i] != bin_2[i]: distance += 1 return distance ``` 接下来,我们需要通过输入的二进制数字列表来判断是否存在误码。可以使用两个嵌套的循环来比较所有的数字对,并使用汉明距离函数计算它们之间的距离。如果距离小于等于1,则存在误码。代码如下: ```python def check_error_codes(bin_list): n = len(bin_list) for i in range(n-1): for j in range(i+1, n): distance = hamming_distance(bin_list[i], bin_list[j]) if distance <= 1: return True return False ``` 最后,我们可以编写一个简单的主程序来测试上述函数。首先,从用户输入中获取二进制数字列表,然后调用`check_error_codes`函数来检查是否存在误码。根据检查结果,输出相应的提示信息。代码如下: ```python if __name__ == "__main__": bin_list = input("请输入二进制数字列表,以逗号分隔:") bin_list = bin_list.split(",") has_error_codes = check_error_codes(bin_list) if has_error_codes: print("存在误码") else: print("不存在误码") ``` 这样,我们就可以使用上述代码来检查给定的二进制数字列表中是否存在误码。希望这个解答能够帮助你理解该问题的解决方案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值