题目:输入一个英文句子,翻转句子中单词的顺序,单单词内字符的顺序不变。为简单起见,标点符号和字母一样处理。如输入“I am a student.”,输出为“student. a am I”。
思路:现将句子中字符翻转,然后挨个翻转单词。
public class Solution {
public static String ReverseSentence(String str) {
char[] a=str.toCharArray();
reverse(a,0,a.length-1);
reverseWord(a);
return new String(a).toString();
}
public static void reverse(char[] a,int left,int right){
while(left<right){
char temp=a[left];
a[left]=a[right];
a[right]=temp;
left++;
right--;
}
}
public static void reverseWord(char[] a){
int left=0;
int right=0;
while(left<a.length){
if(a[left]==' ')
{
left++;
right++;
}else if(right==a.length||a[right]==' '){
reverse(a,left,--right);
left=++right;
}else{
right++;
}
}
}
}