您现在的位置是:首页 > 名人名句

【C语言】三种方法实现字符串逆序函数

作者:胡椒时间:2024-05-07 13:31:08分类:名人名句

简介  文章浏览阅读3.2w次,点赞121次,收藏354次。三种方法实现字符串逆序函数(源码+图解)_字符串逆序输出c语言

点击全文阅读

三种方法实现字符串逆序函数


文章目录

三种方法实现字符串逆序函数一、第一种方法(非函数)二、第二种方法(函数非递归)1.函数的方法2.函数+数组的方法 三、第三种方法(函数递归)四、面试题:对一个数组进行两次逆序打印1.代码实现2.图解面试题 总结


题目如下(示例):

写一段代码实现字符串的逆序打印 例如: 输入:abcdef  输出:fedcba

一、第一种方法(非函数)

代码如下(示例):

//对一个字符串进行逆序int main(){    char arr[1000] = { 0 };    gets(arr);    int len = strlen(arr);    char* left = arr;    char* right = arr + len - 1;    while (left < right)    {        char* tmp = *left;        *left = *right;        *right = tmp;        left++;        right--;    }    printf("%s\n", arr);    return 0;}

在这里插入图片描述
在这里插入图片描述

二、第二种方法(函数非递归)

1.函数的方法

代码如下(示例):

//写一个函数(非递归)实现逆序字符串void severse_string(char* str){int len = strlen(str);char* left = str;char* right = str + len - 1;while (left < right){char tmp = *left;*left = *right;*right = tmp;left++;right--;}}int main(){char arr[] = "abcdef";severse_string(arr);printf("%s\n", arr);return 0;}

在这里插入图片描述
函数和main函数原理一样!这里不做过多的介绍!


2.函数+数组的方法

代码如下(示例):

 //用数组函数的方法(非递归)实现字符串的逆序打印void severse_string(char arr[]){int len = strlen(arr);int left = 0;int right = len - 1;while (left < right){char tmp = arr[left];arr[left] = arr[right];arr[right] = tmp;left++;right--;}}int main(){char arr[] = "abcdef";severse_string(arr);printf("%s\n", arr);return 0;}

在这里插入图片描述


三、第三种方法(函数递归)

代码如下(示例):

//用递归的(函数)的方法实现对字符串的逆序打印void reverse_string(char* str){int len = strlen(str);char tmp = *str;*str = *(str + len - 1);*(str + len - 1) = '\0';if ((strlen(str + 1)) >= 2){reverse_string(str + 1);}*(str + len - 1) = tmp;}int main(){char arr[] = "abcdef";reverse_string(arr);printf("%s\n", arr);return 0;}

注意:这里的 tmp 和 len 的值可以通过调试来观察变化!如下图!
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述这里是函数在一步一步调用,接下来是递归返回的阶段~
第一次返回:
在这里插入图片描述
第二次返回:
在这里插入图片描述
第三次返回:
在这里插入图片描述此时已经对数组全部进行逆序打印!


四、面试题:对一个数组进行两次逆序打印

题目如下(示例):

在这里插入图片描述


1.代码实现

代码如下(示例):

void reverse_string(char* l, char* r){while (l < r){char tmp = *l;*l = *r;*r = tmp;l++;r--;}}int main(){char arr[100] = { 0 };//输入数组gets(arr);//计算数组的大小int len = strlen(arr);char* left = arr;char* right = left + len - 1;reverse_string(left, right);//对单词进行逆序char* start = arr;char* cur = arr;while (*cur!='\0'){while (*cur != ' ' && *cur!='\0'){cur++;}reverse_string(start, cur - 1);start = cur + 1;if (*cur != '\0'){cur++;//cui原来是空格}}printf("%s\n", arr);return 0;}

在这里插入图片描述


2.图解面试题

第一步:整体逆序字符串!
在这里插入图片描述


循环:第二步:对单个单词进行逆序!!!
1.将第一个字符串逆序
在这里插入图片描述
2.将第二个字符串逆序
在这里插入图片描述


总结

以上就是今天要讲的内容,本文介绍了字符串逆序函数的实现原理和相关的面试题。
如果我的博客对你有所帮助记得三连支持一下,感谢大家的支持!
在这里插入图片描述

点击全文阅读

郑重声明:

本站所有活动均为互联网所得,如有侵权请联系本站删除处理

我来说两句