一、题目描述
输入单行英文句子,里面包含英文字母,空格以及.? 三种标点符号,请将句子内每个单词进行倒序,并输出倒序后的语句。
二、输入描述
输入字符串S,S的长度1≤N≤100。
三、输出描述
输出逆序后的字符串
补充说明:
标点符号左右的空格>=0,单词间空格 >0。
四、解题思路
- 读取输入的英文句子;
- 初始化结果字符串result和临时字符串temp为空字符串;
- 遍历输入句子的每个字符:
- 如果当前字符是字母,则将其添加到临时字符串temp中;
- 如果当前字符是空格,则将临时字符串temp反转,并添加到结果字符串result中,同时加上一个空格;
- 如果当前字符是标点符号,则先将非空的临时字符串temp反转并添加到结果字符串result中,然后将当前标点符号添加到结果字符串result中;
- 如果遍历结束后,临时字符串temp非空,则将其反转并添加到结果字符串result中;
- 输出结果字符串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 实现【跳房子II】【2023 B卷 100分】,附详细解题思路
🏆本文收录于,华为OD机试2023(Java)
本专栏包含了最新最全的2023年华为OD机试真题,有详细的分析和Java解答。已帮助1000+同学顺利通过OD机考。专栏会持续更新,每天在线答疑。