首页 > 编程知识 正文

字符串复制函数strcpy(字符串常见编程题)

时间:2023-05-06 18:27:51 阅读:92351 作者:4942

打基础时,不要太沉迷于库函数。

题目:344. 反转字符串

创建一个用于反转输入字符串的函数。 输入字符串以字符数组char[]的形式给出。

请勿为其他数组分配额外的空间。 必须当场修改输入数组,使用o(1)的多余空间解决这个问题。

可以假设数组中的所有字符都是ASCII代码表中的可打印字符。

示例1 :

输入: h、e、l、l、o。 输出: o、l、e和h。 示例2 :

输入: h、a、n、n、a、h输出: h、a、n、n、a、h

思路

我先说句题外话:

关于这个主题,一些同学直接使用c的库函数reverse,调整后很快就结束了。 我相信每个编程语言都有这样的库函数。

这样解决问题的话,反转字符串的实现原理就不太明白了。

但是,并不是不能使用库函数,而是根据场景不同而不同。

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

“如果主题的重要部分可以直接用库函数解决,则建议不要使用库函数。 “”

毕竟面试官不是考察你对库函数的熟练度,如果是使用python和java的学生的话就需要更加注意。 因为,python、java提供了丰富的库函数。

“如果库函数只是解题过程的一部分,并且对该库函数的内部实现原理很了解的话,也可以考虑使用库函数。 “”

平时用leet代码练习算法时,建议根据这样的原则进行练习。 这样有助于理解算法。

不要沉迷于使用库函数通过单行代码解决问题等技巧。 不是说这些技巧不好,而是说可以用来娱乐。

真正自己写作的时候,要保证能实现理解是相应的功能。

下面介绍如何解决反转字符串问题。

大家应该也记得。 我们已经谈了206 .逆转链接列表的事。

使用了双指针方法来反转链表。

虽然反转字符串仍然是使用双指针的方法,但是反转字符串比链表更简单。

由于字符串也是数组,元素在内存中连续分布,这决定了反转链表的方法和反转字符串的方法不同。

如果学生不知道数组和链表的原理,可以看到这两者。 关于链表,你应该知道这些。 必须掌握排列理论的知识。

对于字符串,定义两个指针(也可以称为索引下的表),一个从字符串前面移动,另一个从字符串后面移动,两个指针同时移动到中间以交换元素。

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

写下这样的c代码:并不难

voidreversestring (向量符号) {

for(inti=0,j=s.size ) )-1; is.size ()/2; I,j---- ) {

swap (西班牙语,西班牙语);

}

}

在循环中进行s[i]和s[j]的交换操作就可以了,但是在这里使用了叫做swap的库函数。 大家都可以用。

我想您知道交换函数是如何实现的,而且这个库函数只是解题中的一部分,所以在这里使用库函数也可以。

swap有两个实现。

一个是常见的交换数值:

int tmp=秒;

s=s;

s[j]=tmp;

一个是由位运算引起的

s ^=s;

^=秒;

s ^=s;

这个题目还很简单,但我正好可以通过这个题目说出刷题时使用库函数的原则。

如果主题的重要部分可以直接用库函数解决,建议不要使用库函数。

如果库函数只是解决问题的一小部分,并且您很清楚该库函数的内部实现原理,则可以考虑使用库函数。

基于这样的原则,我不使用reverse库函数,而是使用swap库函数。

“在字符串相关主题方面,库函数对大家的吸引力非常大。 因为有各种各样的反转,切取单词的操作”。 这就是为什么字符串库函数这么丰富的原因。

我相信大家根据我叙述的原则做字符串相关的主题,在选择库函数方面是有原则的,是可以得到的。

在留言区留下你的想法吧!

--------- -结束-------

关于算法学习的资料总结在github:https://github.com/young yangyang 04/leet代码- master中。 其中还有leet代码刷题攻略、各类型经典主题刷题顺序、思维导图。 看看就一定会得到。

每天8:35小时推送经典算法主题,推送的所有主题不是孤立的,而是浅而深、圈、梳理算法知识脉络,轻松学习算法!

《@代码随想录》期待着你的关注!

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。