package com.sf.ccmas.video.config.odd.od7;
import java.util.*;
/**
* 单词倒序
* 题目
* 输入单行英文句子,里面包含英文字母,空格以及, . ? 三种标点符号,
* 请将句子内每个单词进行倒序,并输出倒序后的语句。
*
* 输入
* 输入字符串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.
*
* 输入
* woh era uoy, I ma enif.
* 输出
* how are you, I am fine.
*/
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String line = scanner.nextLine();
Set<Character> set = new HashSet<>();
set.add(',');
set.add('?');
set.add('.');
String[] array = line.split(" ");
StringBuilder lineString = new StringBuilder();
for (String letter : array) {
if (letter.length() == 1) {
lineString.append(letter).append(" ");
continue;
}
char[] charArray = letter.toCharArray();
char last = charArray[charArray.length - 1];
if (set.contains(last)) {
reverse(charArray, 0, charArray.length - 2);
}else {
reverse(charArray, 0, charArray.length - 1);
}
StringBuilder sb = new StringBuilder();
for (char dict : charArray) {
sb.append(dict);
}
String letterStr = sb.toString();
System.out.println(letterStr);
lineString.append(letterStr).append(" ");
}
System.out.println(lineString.toString());
}
//反转字符数组
public static void reverse(char[] charArray, int left, int right) {
while (left < right) {
//先交换
char temp = charArray[left];
charArray[left] = charArray[right];
charArray[right] = temp;
//移动指针
left++;
right--;
}
}
}
华为OD题目: 单词倒序
于 2023-04-22 14:01:16 首次发布