给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。
示例 1:
输入: "Let's take LeetCode contest" 输出: "s'teL ekat edoCteeL tsetnoc"
做题思想就是每次遇到空格就停下来,把之前的单词先翻转,再继续向下遍历
public class test0211 {
public static void main(String[] args) {
String s = "Let's take LeetCode contest";
Solution S = new Solution();
String chars = S.reverseWords(s);
System.out.println("变换后的字符串: "+chars);
}
}
class Solution {
public String reverseWords(String s) {
if(s == null || s.length() == 0)
{
return s;
}
char[] chars = s.toCharArray();
int a=-1;
for(int i=0;i<chars.length;i++){
//遇到空格,将空格之前的单词翻转
if(chars[i]==' '){
int kongge=i;
reverse(chars,a+1,kongge-1);
a=kongge;
}
}
reverse(chars,a+1,chars.length-1);
return new String(chars);
}
public void reverse(char[] chars,int low,int high){
while(low < high){
char temp = chars[low];
chars[low] = chars[high];
chars[high] = temp;
low++;
high--;
}
}
}