【题目11】字符串原地反转

解题思路: 这是百度的一道笔试题,这应该算是百度笔试题中相对简单的一道了。

解决的方法也很简单,直接交换字符串两端的字符,直到到达中间位置。

 

源代码:(VC6下通过测试)

#include #include #include char* RevertString(char *str) { char c; int len = strlen(str); for(int i = 0; i < len/2; i++) { c = str[i]; str[i] = str[len-i-1]; str[len-i-1] = c; } str[len] = '/0'; return str; } int main() { char s[] = "hello,world"; char* p = RevertString(s); printf("%s/n",p); return 0; }

 

还看到过一道不用临时变量整形数组原地逆转的题目,其实就是用到了前面文章中交换

算法中不用临时变量的技巧。

#include #include void RevertIntArray(int* a, int len) { assert(a != NULL); for(int i = 0; i < len/2; i++) { a[i] = a[i] + a[len-i-1]; a[len-i-1] = a[i] - a[len-i-1]; a[i] = a[i] - a[len-i-1]; } } int main() { int a[] = {0,1,2,3,4,5,6,7,8,9}; RevertIntArray(a,sizeof(a)/sizeof(int)); for(int i = 0; i < sizeof(a)/sizeof(int); i++) printf("%d ", a[i]); printf("/n"); return 0; }

你可能感兴趣的:(笔试面试题)