给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。 示例 1: 输入: "Let's take LeetCode contest" 输出: "s'teL ekat edoCteeL tsetnoc" 注意:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。
1 char * reverseWords(char * s){ 2 int i,j,index; 3 char ch; 4 5 i = index = 0; 6 do 7 { 8 if (s[i]==' ' || s[i]=='\0') 9 { 10 for (j=0 ; j<(i-index)/2 ; ++j) 11 { 12 ch = s[i-1-j]; 13 s[i-1-j] = s[index+j]; 14 s[index+j] = ch; 15 } 16 index = i+1; 17 } 18 }while (s[i++]!='\0'); 19 20 return s; 21 }
解题思路:
在原字符串上进行操作,
通过使用两个下标(双指针),确定每个单词的左右边界,并对单词进行反转。