也是面腾讯的一道编程题=,=

  这题比较简单

代码如下:

  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. // 非递归实现字符串反转
  5. char *reverse_v1(char *str)
  6. {
  7. if( !str )
  8. {
  9. return NULL;
  10. }
  11.  
  12. int len = strlen(str);
  13. char temp;
  14. for( int i = ; i < len / ; i++ )
  15. {
  16. // 交换前后两个相应位置的字符
  17. temp = *(str + i);
  18. *(str + i) = *(str + len - - i);
  19. *(str + len - - i) = temp;
  20. }
  21.  
  22. return str;
  23. }
  24.  
  25. // 非递归实现字符串反转
  26. char *reverse_v2(char *str) {
  27. if( !str )
  28. return NULL;
  29.  
  30. int len = strlen(str);
  31. int i, j;
  32. char temp;
  33. for( i = ,j= len-; i < j; i++, j--) {
  34. // 交换前后两个相应位置的字符
  35. temp=str[i];
  36. str[i]=str[j];
  37. str[j]=temp;
  38. }
  39.  
  40. return str;
  41. }
  42.  
  43. // 递归实现字符串反转
  44. void reverse(char *str, int n)
  45. {
  46. if( !str )
  47. return ;
  48.  
  49. if ( == n || == n) {
  50. return;
  51. } else {
  52. char tmp = str[];
  53. str[] = str[n-];
  54. str[n-] = tmp;
  55. reverse(str+, n-);
  56. }
  57.  
  58. }
  59.  
  60. int main() {
  61. // 不能用 char *str = "help";这种,因为这种情况下的"help"是个字符常量,"help"存放于常量区
  62. // 参考&拓展:http://www.cnblogs.com/lingshaohu/p/3956239.html
  63. char str[] = "help";
  64.  
  65. //char *dst = reverse_v1(str);
  66. //char *dst = reverse_v2(str);
  67. //printf("%s\n", dst);
  68.  
  69. reverse(str, strlen(str));
  70.  
  71. printf("%s\n", str);
  72.  
  73. return ;
  74. }

ref:http://blog.csdn.net/ameyume/article/details/5599139#

C语言反转字符串的更多相关文章

  1. golang——reverse反转字符串

    reverse反转,是个比较基础算法.要实现这个方法,从常理考虑可以申请一个新空间,然后将字符串的从尾到头依次填充该空间,最后新空间的内容就是反转后的结果了,这个方式的算法复杂度是O(n),并且还需要 ...

  2. 《c程序设计语言》读书笔记--反转字符串

    #include "stdio.h" #define Num 100 void reverse(char words[]) { int i, j, c, n=0; while(wo ...

  3. Leecode刷题之旅-C语言/python-344反转字符串

    /* * @lc app=leetcode.cn id=344 lang=c * * [344] 反转字符串 * * https://leetcode-cn.com/problems/reverse- ...

  4. Python 中的反转字符串:reversed()、切片等

    摘要:以相反的顺序反转和处理字符串可能是编程中的一项常见任务.Python 提供了一组工具和技术,可以帮助您快速有效地执行字符串反转. 本文分享自华为云社区<Python 中的反转字符串:rev ...

  5. R语言拆分字符串

    R语言拆分字符串 aaa<-"aa;bb;cc"ccc<-strsplit(aaa,split=";") bbb<- unlist(strsp ...

  6. C# 反转字符串方法

    using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 反转字符 ...

  7. C# 反转字符串

    using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 实现字符 ...

  8. C语言之字符串处理函数

    C语言中字符串处理函数介绍 下面介绍8种基本的常用的字符串处理函数,在数值数组中也常常用到(部分函数).所有的C语言编译系统中一般都提供这些函数. 1.puts函数——输出字符串的函数 一般的形式为p ...

  9. Swift3.0语言教程字符串与URL的数据转换与自由转换

    Swift3.0语言教程字符串与URL的数据转换与自由转换 Swift3.0语言教程字符串与URL的数据转换 Swift3.0语言教程字符串与URL的数据转换与自由转换,字符串中的字符永久保存除了可以 ...

随机推荐

  1. Project Euler 75:Singular integer right triangles

    题目链接 原题: It turns out that 12 cm is the smallest length of wire that can be bent to form an integer ...

  2. TCL语言笔记:TCL中的列表操作

    一.介绍 列表则是具有特殊解释的字符串.Tcl 中的列表操作和其它 Tcl 命令一样具有相同的结构.列表可应用在诸如 foreach 这样的以列表为变元的循环命令中,也应于构建 eval 命令的延迟命 ...

  3. QT进度条QProgressBar的练习(定制QProgressBar,单独成为一个控件)

    progressbar.h #ifndef PROGRESSBAR_H #define PROGRESSBAR_H #include <QProgressBar> class QStrin ...

  4. IDEA15 File工具栏中没有 Import Project

    使用IDEA准备导入项目时发现没有Import Project选项... 解决办法: Settings > Appearance & Bechavior > Menus and T ...

  5. 使用phantomjs对页面进行截图

    本文章参考了使用phantomjs操作DOM并对页面进行截图需要注意的几个问题 及 phantomjs使用说明 这两篇文章,初次接触phantomjs的童鞋可以去看下这两篇原文 在学习中可以看下 ph ...

  6. Android Intent个人介绍

    在Android中要打开一个新的Activity, 不用说,肯定会用到Intent,Intent作为Android的四大组件之一,个人理解,Intent的作用就是用来在(其它三个不同组件)间进行通讯, ...

  7. laravel速记(笔记)

    命令行: php artisan controller:make UserController This will generate the controller at /app/controller ...

  8. WebBrowser自动点击链接 广告自动点击 Ads Auto Click

    点击付费广告, 是目前比较流行的一种网络营销模式, 但是,如果你单纯的靠手工一个一个去点, 总觉得不划算  , 能不能实现自动的去点击呢? 答案是肯定的 .NET 里面的 WebBrowser, 可以 ...

  9. linux/unix网络编程之 select

    转自http://www.cnblogs.com/zhuwbox/p/4221934.html linux 下的 select 知识点 unp 的第六章已经描述的很清楚,我们这里简单的说下 selec ...

  10. poj 1195 Mobile phones(二维树状数组)

    树状数组支持两种操作: Add(x, d)操作:   让a[x]增加d. Query(L,R): 计算 a[L]+a[L+1]……a[R]. 当要频繁的对数组元素进行修改,同时又要频繁的查询数组内任一 ...