字符串反转算法
str="world hello"; 翻转字符串为 str="hello world";
要求空间复杂度为1
两个步骤 1:将整体字符串反转为“olleh dlrow” 2:将每个单词反转为“hello world”
//反转字符串算法
#include <stdio.h>
void swap(char* msg,int i,int j){
char temp = msg[i];
msg[i] = msg[j];
msg[j] = temp;
}
void revertMsgForChar(char *msg,int start,int end){
while(start < end){
swap(msg,start,end);
start++;
end --;
}
}
int main(int argc, char *argv[]){
char msg[] = {'w','o','r','l','d',' ','h','e','l','l','o'};
//char msg[]={'I' ,' ', 'a' ,'m' ,' ', 'w' ,'i', 'n','n','e','r'};
int length = sizeof(msg);
printf("length = %d \n", length);
revertMsgForChar(msg,0,length-1);
int start = 0;
int end = length - 1;
for(int i=0;i<length;i++){
if(' ' == msg[i]){
end = i-1;
revertMsgForChar(msg,start,end);
start = i+1;
}
}
revertMsgForChar(msg,start,length - 1);
for(int i=0;i<length;i++){
printf("%c ", msg[i]);
}
printf("\n");
return 0;
}