用C或C++实现void reverse(char *str)函数,即反转一个null结尾的字符串。
关键点:在C或者C++中字符串是以\0结尾的。此题的思路找到字符串的长度,然后两头交换。
交换函数:
void swap(char *lft, char *rht)
{
*lft = *lft ^ *rht;
*rht = *lft ^ *rht;
*lft = *rht ^ *lft;
}- 找到最后一个字符串的指针,然后进行头尾交换。
void revers(char *str)
{
if ('\0' == str) {
return;
}
char *p = str;
char *q = str;
while (*q) {
++q;
}
--q; // last point to character
while (p < q) {
swap(p++, q--);
}
}- 遍历字符串获得其长度,再头尾交换
void reverse(char *str)
{
if ('\0' == str) {
return;
}
/*
int len = 0;
while (str[len] != '\0') {
len++;
}
for (int i = 0, j = len - 1; i <= j; ++i, --j) {
swap(&str[i], &str[j]);
}
*/
int len = strlen(str);
for (int i = 0; i < len / 2; ++i) {
swap(&str[i], &str[len - i - 1]);
}
}