0%

反转一个字符串

反转一个字符串

对”hello,world!”,进行反转.
错误实现:

1
2
3
4
5
6
7
8
9
10
11
12
13
//反转一个字符串
char * reverseString(char *src)
{
char *rs = src;
while (*src != '\0') {
src++;
}
while (*rs != '\0') {
*rs++ = *--src;
}

return src;
}

这种思路其实是错的.当rs与src相遇时,字符串已经变为”!dlrowworld!”,再进行替换操作就会出问题了,因为字符”hello,”已经被替换而不存在了.所以不应该使用替换,而应该使用交换.

正确实现:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//反转一个字符串
char * reverseString(char *src)
{
char *forwardPtr = src;
char *backPtr = src;

while (*backPtr != '\0') {
backPtr++;
}

while (forwardPtr < backPtr) {
char tmp = *forwardPtr;
*forwardPtr++ = *--backPtr;
*backPtr = tmp;
}

return src;
}
觉得文章有帮助可以打赏一下哦!