一、题目描述

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

二、输入描述

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

三、输出描述

输出逆序后的字符串

补充说明:

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

四、解题思路

  1. 读取输入的英文句子;
  2. 初始化结果字符串result和临时字符串temp为空字符串;
  3. 遍历输入句子的每个字符:
    • 如果当前字符是字母,则将其添加到临时字符串temp中;
    • 如果当前字符是空格,则将临时字符串temp反转,并添加到结果字符串result中,同时加上一个空格;
    • 如果当前字符是标点符号,则先将非空的临时字符串temp反转并添加到结果字符串result中,然后将当前标点符号添加到结果字符串result中;
    • 如果遍历结束后,临时字符串temp非空,则将其反转并添加到结果字符串result中;
  4. 输出结果字符串result;

五、Java算法源码

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    String inputSentence = scanner.nextLine();

    String result = "";
    String temp = "";

    for (int i = 0; i < inputSentence.length(); i++) {
        char current = inputSentence.charAt(i);

        // 如果当前字符是字母,将其添加到 temp 中
        if (Character.isLetter(current)) {
            temp += current;
        } else if (current == ' ') {
            // 将临时字符串反转,然后添加到结果字符串中,并加上空格
            result += reverse(temp) + " ";
            temp = "";
        } else { // 如果当前字符是标点符号
            if (!temp.isEmpty()) {
                // 将临时字符串反转,然后添加到result
                result += reverse(temp);
                temp = "";
            }
            // 将标点符号添加到result中
            result += current;
        }

        if (i == inputSentence.length() - 1 && !temp.isEmpty()) {
            result += reverse(temp);
        }
    }

    System.out.println(result);
}

public static String reverse(String str) {
    String temp = "";
    for (int i = str.length() - 1; i >= 0; i--) {
        temp += str.charAt(i);
    }
    return temp;
}

六、效果展示

1、输入

avajydutscbzn

2、输出

nzbcstudyjava

3、思路

这道题属于白送分,非常简单,没啥思路。

华为OD机试真题 Java 实现【单词倒序】【2023Q1 100分】,附详细解题思路-LMLPHP


🏆下一篇:华为OD机试真题 Java 实现【跳房子II】【2023 B卷 100分】,附详细解题思路

🏆本文收录于,华为OD机试2023(Java)

本专栏包含了最新最全的2023年华为OD机试真题,有详细的分析和Java解答。已帮助1000+同学顺利通过OD机考。专栏会持续更新,每天在线答疑。

华为OD机试真题 Java 实现【单词倒序】【2023Q1 100分】,附详细解题思路-LMLPHP

06-04 02:53