字符串翻转?该怎么解决
字符串翻转?
------解决方案--------------------
当执行到“end=ptr-1; //end指向单词末尾 ”这一行时,ptr指向字符串中的空格。ptr-1指向它前面的一个字符,例子中即字母o。你说o是不是单词末尾啊?
------解决方案--------------------
end指向末尾,start指向开头,这样才能交换啊。
start,end ptr 首先都指向字符串首地址==开始扫描前,肯定都指向开头啊,随着交换的进行,这些指针都在改变位置的。
------解决方案--------------------
不是有现成的函数reverse()吗?
------解决方案--------------------
人家要hello world变成world hello
还有人要abc\r\ndef变成fed\r\ncba
还有人要您好变好您
------解决方案--------------------
void Revese(char *str){end=ptr-1; //end指向单词末尾 ???是什么意思,start,end ptr 首先都指向字符串首地址??-1 应该是向前移动一个单位,怎么会指向单词末尾???????
char *start=str,*end=str,*ptr=str; //开头,结尾,中间指针
while (*ptr++!='\0')
{
if (*ptr==' '||*ptr=='\0') //找到一个单词
{
end=ptr-1; //end指向单词末尾
while (start<end)
swap(*start++,*end--); //把单词的字母逆置
start=end=ptr+1; //指向下一个单词开头
}
}
start=str,end=ptr-2;//start指向字符串开头,end指向字符串末尾
while (start<end)
{
swap(*start++,*end--);
}
}
------解决方案--------------------
void Revese(char *str){
char *start=str,*end=str,*ptr=str; //开头,结尾,中间指针
while (*ptr++!='\0')
{
if (*ptr==' '
------解决方案--------------------
*ptr=='\0') //找到一个单词
{
end=ptr-1; //end指向单词末尾
while (start<end)
swap(*start++,*end--); //把单词的字母逆置
start=end=ptr+1; //指向下一个单词开头
}
}
start=str,end=ptr-2;//start指向字符串开头,end指向字符串末尾
while (start<end)
{
swap(*start++,*end--);
}
}
int main()
{
char str[] = "hello world";
Revese( str );
cout << str;
return 0;
}
当执行到“end=ptr-1; //end指向单词末尾 ”这一行时,ptr指向字符串中的空格。ptr-1指向它前面的一个字符,例子中即字母o。你说o是不是单词末尾啊?
初始化嘛,后来不是通过while (*ptr++!='\0')等语句重新赋值了吗?
------解决方案--------------------
end指向末尾,start指向开头,这样才能交换啊。
start,end ptr 首先都指向字符串首地址==开始扫描前,肯定都指向开头啊,随着交换的进行,这些指针都在改变位置的。
------解决方案--------------------
不是有现成的函数reverse()吗?
------解决方案--------------------
人家要hello world变成world hello
还有人要abc\r\ndef变成fed\r\ncba
还有人要您好变好您
------解决方案--------------------