1、实现字符串数组的逆序,使用非递归的方法,设置一个临时变量存储空间
//不使用递归
void InverseString1(char *str)
{
int left=0;
int right =strlen(str)-1;
while(left<right)
{
char temp=str[left];
str[left]=str[right];
str[right]=temp;
left++;
right--;
}
}
2、实现字符串数组的逆序,使用递归的方法,设置一个临时变量存储空间,调用该函数
ReverseString(str,0,len-1),其中len=strlen(str);
//递归
void RecurInverseString(char *str,int left,int right)
{
if (left>=right)
{
return;
}
char temp = str[left];
str[left]=str[right];
str[right]=temp;
RecurInverseString(str,left+1,right-1);
}
3、实现字符串数组的逆序,使用非递归的方法,不使用临时变量存储空间
//不使用递归,不使用临时存储空间
void InverseString2(char *str)
{
int left=0;
int right =strlen(str)-1;
while(left<right)
{
str[left]=str[left]^str[right];
str[right]=str[left]^str[right];
str[left]=str[left]^str[right];
left++;
right--;
}
}
该方法实现两个字符的交换,不使用临时的变量存储空间temp,而采用异或的方法实现两个字符的交换。
4、实现一个句子中所有单词的逆反
void ReverseWord(char* p, char* q)
{
char temp=NULL;
while(p<q)
{
temp=*p;
*p=*q;
*q=temp;
p++;
q--;
}
}
void ReverseSentence(char *str)
{
char *p=str;
char* q=p;
while ('\0'!=*q)
{
if (*q==' ')
{
ReverseWord(p,q-1);
q++;
p=q;
}
else
q++;
}
ReverseWord(p,q-1);