小工具知识网

当前位置: 首页 > 行业知识 > 代码随想录算法训练营第七天|344.反转字符串 541.反转字符串II 卡码网:54.替换数字 151.翻转字符串里的单词 卡码网: 55.右旋字符串

行业知识

代码随想录算法训练营第七天|344.反转字符串 541.反转字符串II 卡码网:54.替换数字 151.翻转字符串里的单词 卡码网: 55.右旋字符串

2026-10-19 03:52:43 来源:互联网转载

344.反转字符串

���题是字符串基础题目,就是考察 reverse 函数的实现,同时也明确一下 平时刷题什么时候用 库函数,什么时候 不用库函数 

题目:编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、

思路

先说一说题外话:

对于这道题目一些同学直接用C++里的一个库函数 reverse,调一下直接完事了, 相信每一门编程语言都有这样的库函数。

如果这么做题的话,这样大家不会清楚反转字符串的实现原理了。

但是也不是说库函数就不能用,是要分场景的。

如果在现场面试中,我们什么时候使用库函数,什么时候不要用库函数呢?

如果题目关键的部分直接用库函数就可以解决,建议不要使用库函数。

如果库函数仅仅是 解题过程中的一小部分,并且你已经很清楚这个库函数的内部实现原理的话,可以考虑使用库函数

在反转链表中,使用了双指针的方法。

那么反转字符串依然是使用双指针的方法,只不过对于字符串的反转,其实要比链表简单一些。

因为字符串也是一种数组,所以元素在内存中是连续分布,这就决定了反转链表和反转字符串方式上还是有所差异的。

对于字符串,我们定义两个指针(也可以说是索引下标),一个从字符串前面,一个从字符串后面,两个指针同时向中间移动,并交换元素。

以字符串hello为例,过程如下:

https://code-thinking.cdn.bcebos.com/gifs/344.%E5%8F%8D%E8%BD%AC%E5%AD%97%E7%AC%A6%E4%B8%B2.gif

在字符串相关的题目中,库函数对大家的诱惑力是非常大的,因为会有各种反转,切割取词之类的操作,这也是为什么字符串的库函数这么丰富的原因。

C代码如下:

void reverseString(char* s, int sSize) {

    int left=0,right=sSize-1;

    while(left//翻转,区间为左闭右闭//去除所有空格并在相邻单词之间添加空格,快慢指针//遇到非空格就处理,即删除所有空格//遇到空格或到达串尾,说明一个单词结束,进行反转

上一篇:Win10字体调整全攻略,轻松设置字体大小与样式!

下一篇:保护主机安全