百度一面,字符串翻转

来源:互联网 发布:重点软件企业 收入 编辑:程序博客网 时间:2024/05/18 09:24

给定一个字符串,比如“abcdef”,要求写一个函数,将字符串翻转成“defabc”,或者翻转成“efabcd”,字串位数要求是可变的。

此题还是2011年考研数据结构压轴大题,在百度面前也就是一面第一题。可见百度一斑。

解法是将字符串进行3次翻转,第一次翻转整个字符串,第二次跟第三次翻转部分字符串。

上代码:

#include<stdio.h>void swap(char *str,int n){char temp;char *p,*q;p = str;q = str + n - 1;while(p < q){temp = *p;*p = *q;*q = temp;p++;q--;}}void reserve(char *str,int n){swap(str,strlen(str));swap(str,n);swap(str+n,strlen(str)-n);}int main(int argc,char *argv[]){char str[10] = "abcdef";printf("%s\n",str);reserve(str,3);        //3是翻转的位数printf("%s\n",str);return 0;}