反转一个字符串
对”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; }
|