题目:
给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。
示例:
输入:"Let's take LeetCode contest" 输出:"s'teL ekat edoCteeL tsetnoc"
提示:
- 在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。
结果:
解题思路:
用两个指针:i 记录单词的开头,j 记录单词的结尾。
用新的下表n,从 单词结尾到 i 一个个复制过去。
代码:
char * reverseWords(char * s){
int len = strlen(s);
char *retStr = (char*)malloc(sizeof(char) * (len+1));
int index = 0;
for(int i = 0, j = 0; i < len && j < len;) {
for(; j < len && s[j] != ' ' && s[j] != '\0'; j++);
for(int n = j - 1; n >= i; n--) {
retStr[index++] = s[n];
}
retStr[index++] = ' ';
i = j + 1;
j++;
}
retStr[index-1] = '\0';
return retStr;
}