多种方法实现字符串的逆置

来源:互联网 发布:初始化编程单元时出错 编辑:程序博客网 时间:2024/06/05 03:20

实现思想:字符串逆置有很多种方法:

  1. 逐个翻转;(先将第一个字符保存,将自第二个起到最后为止的字符依次前移一位,再将保留下来的第一个字符放置最后一位,这样实现了一次。循环多次实现整体逆置。缺点:代码的时间复杂度太高)
  2. 指针实现;(用两个指针,一个指向头部,一个指向尾部,进行交换只需交换至二者重合或交错即停下。其大大降低了代码的时间复杂度和空间复杂度)
  3. 递归实现。
如下为后两种方法实现的代码:
#include<stdio.h>#include<stdlib.h>#include<assert.h>int my_strlen(char *string)                                             //实现计算字符串长度{int len = 0;while (*string){string++;len++;}return len;}void reverse_string(char *string)                                   //递归实现字符串逆置{ assert(string);int len = my_strlen(string);char* end = string + len - 1;char tmp = 0;if (len>=2){tmp = *string;*string = *end;*end = '\0';reverse_string(string + 1);*end = tmp;}return;}void reverse_string1(char *string)                                    //指针实现字符串逆置{char *start = string;char *end = string + my_strlen(string) - 1;while (start <= end){*start ^= *end;*end ^= *start;*start ^= *end;start++;end--;}}int main(){char arr[] = "ABCDEF";reverse_string(arr);printf("%s", arr);system("pause");return 0;}


阅读全文
0 0
原创粉丝点击