LintCode中的反转字符串,自己写的不对 参考答案写出的
思路: 先将整个数组反转,然后根据空格出现的位置,判断每个单词,再将整个单词反转 这里每个单词的位置是 index - i-1
但是由于不能保证最后一个单词后面还有空格,所以最后一个要单独反转
public class Test {
public static void main(String [] args)
{
char [] c = {'a','b', ' ','d',' ','e','r'};
char [] s = reverseWords(c);
System.out.print(s);
}
public static char[] reverseWords(char[] str) {
if(str == null || str.length == 0){
return str;
}
//翻转整个数组
reverse(str, 0, str.length - 1);
int index = 0;
//翻转每一个单词
for(int i = 0; i < str.length; i++){
if(str[i] == ' ')
{
reverse(str, index, i - 1);
index = i + 1;
}
}
//翻转最后一个单词
reverse(str, index, str.length - 1);
return str;
}
private static void reverse(char[] str, int start, int end){
while(start <= end){
char temp = str[start];
str[start] = str[end];
str[end] = temp;
start++;
end--;
}
}
}