zoukankan      html  css  js  c++  java
  • C语言反转字符串

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

      这题比较简单

    代码如下:

     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 = 0; i < len / 2; i++ )   
    15     {   
    16         // 交换前后两个相应位置的字符   
    17         temp = *(str + i);   
    18         *(str + i) = *(str + len - 1 - i);   
    19         *(str + len - 1 - 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 = 0,j= len-1; 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 (1 == n || 0 == n) {     
    50         return;
    51     } else {
    52         char tmp = str[0];
    53         str[0] = str[n-1];
    54         str[n-1] = tmp;
    55         reverse(str+1, n-2);
    56     }
    57         
    58 } 
    59 
    60 
    61 
    62 int main() {
    63     // 不能用 char *str = "help";这种,因为这种情况下的"help"是个字符常量,"help"存放于常量区
    64     // 参考&拓展:http://www.cnblogs.com/lingshaohu/p/3956239.html 
    65     char str[] = "help";  
    66 
    67     //char *dst = reverse_v1(str);
    68     //char *dst = reverse_v2(str);
    69     //printf("%s
    ", dst);
    70 
    71     reverse(str, strlen(str));
    72 
    73     printf("%s
    ", str);
    74 
    75     return 0;
    76 }

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

  • 相关阅读:
    [转] Java的打包apk, jar、war、ear包
    查看网络端口
    adb删除系统软件
    打开大文件的方法
    转载:Adb远程连接Android系统(通过网络使用ADB(Connect to android with wifi))
    网站后台语言(笔记)
    mysql和mysqli使用笔记
    Data Management Technology(5) -- Recovery
    Data Management Technology(4) -- 关系数据库理论
    Data Management Technology(3) -- SQL
  • 原文地址:https://www.cnblogs.com/lingshaohu/p/3956261.html
Copyright © 2011-2022 走看看