| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
wdey
10年前发布

百度面试题:字符串翻转代码

给定一个字符串,比如“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;  }