逆置问题
程序员文章站
2022-06-21 23:48:36
今天初次遇到需要逆置字符串的题,该死的不让我用strrev,是时候学习一下了 所谓逆置,都一样,无论任何数据类型,都可以套用,此处为了偷懒,只处理字符数组 。。。。 最最偷懒的方法当然是用c++的中的reverse函数了 void reverse (BidirectionalIterator fir ......
今天初次遇到需要逆置字符串的题,该死的不让我用strrev,是时候学习一下了
所谓逆置,都一样,无论任何数据类型,都可以套用,此处为了偷懒,只处理字符数组
。。。。
最最偷懒的方法当然是用c++的
void strRev(char *s) //传入字符数组首地址 char *end = s + strlen(s) - 1; //取最后一个元素的地址 while( end > s) //头尾指针相遇 *end^=*s; //用位与的方式交换,完全可以忽略这种骚操作,多数时候没啥意义 *s^=*end; *end^=*s; end--; //头尾指针向中间移动 s++; } }
实现与上边相同,只是写的装逼点
void strRev(char *s) { char temp; for(char *end = s + strlen(s) - 1; end > s ; --end, ++s) { *end^=*s; *s^=*end; *end^=*s; } }
再有就是递归实现了
没意义,容易溢出,考试不敢用
上一篇: 集合.容器