import java.util.*;
public class Main {
public void swapStr(char[] array, int begin, int end) {
while (begin < end) {
char tmp = array[begin];
array[begin] = array[end];
array[end] = tmp;
begin++;
end--;
}
}
//判断一个字符是否是数字或字母
public boolean isNumOrLetter(char a) {
return ((a >='0'&&a<='9') || (a>='A'&&a<='Z') || (a>='a'&&a<='z'));
}
public String solution(String input) {
if(input == null){
return null;
}
char[] array = input.toCharArray();//将字符串转为数组
int begin = 0;
int end = 0;
//考虑字符串的首部有空格或标点符号且可能单词间有多个空格或标点符号
int i = 0;
while (i<array.length) {
//找到每个单词的首字母对应的下标
while (i<array.length && !isNumOrLetter(array[i])) {
i++;
}
begin = i;//单词首字母的下标
while (i<array.length && isNumOrLetter(array[i])) {//获取单词尾字母后第一个空格或标点符号的下标
i++;
}
end = i-1;//单词尾字母
swapStr(array, begin, end);
}
String result = new String(array);
return result;
}
}