题目:
Write code to reverse a C-Style String. (C-String means that “abcd” is represented as five characters, including the null character.)
对C风格的字符串进行反转,注意末尾字符串的空符号。
解答:
这是一个很经典的面试问题,就是考察你有没有注意到字符串后面的空符号,如果不考虑空符号的问题,那么我们可以直接这么写:
void reverse1(char *s)
{
int n = strlen(s);
for(int i=0;i<n/2;i++)
{
char temp = s[i];
s[i] = s[n-1-i];
s[n-1-i] = temp;
}
}
因此,要在代码上有体现最好还是按书上的写:
void swap(char &a, char &b)
{
a = a^b;
b = a^b;
a = a^b;
}
void reverse2(char *s)
{
if(!s)return;
char *start = s, *end = s;
while(end)end++;
end--;//空符号
while(start<end)
{
swap(*start,*end);
start++;
end--;
}
}