龙空技术网

打基础之,LeetCode算法题第20日-补,翻转字符串中的单词

吾是我师 259

前言:

而今小伙伴们对“c语言字符翻转”都比较注意,同学们都需要分析一些“c语言字符翻转”的相关内容。那么小编也在网摘上搜集了一些对于“c语言字符翻转””的相关文章,希望小伙伴们能喜欢,大家一起来学习一下吧!

一直很纠结算法的文章应该怎么写。最后觉得还是从最简单的level开始写吧,一开始就弄些重量级的,什么人工智能,机器学习的算法,还要有大量的数学以及优化的知识,小白们估计会很郁闷,当然我也不一定能做出来对吧。

我计划每题给出两种语言的解决方案,一种静态语言,一种动态语言。

我选择C语言和Python,本来考虑Java,但是篇幅有限,有兴趣的朋友自己试试

LeetCode 557. 翻转字符串中的字符3(Reverse Words in a String III)

问题描述:

给定一个字符串,您需要反转句子中每个单词中的字符顺序,同时仍保留空格和初始单词顺序。

注:

每个单词以空格分隔。

示例: C语言实现:

原则是不改变原字符串,所以首先动态分配一个和输入字符串s等长的字符串t。

然后遍历字符串s,当遇到空格时候,就表示前面遇到了一个word,就调用定义的reverse()函数来翻转该word并填充到t的相应位置。

注意,当循环结束的时候还需要再调用一次reverse()函数,因为在循环中reverse()都是遍历到一个word后的空格才触发,而最后一个word后面是不存在空格的。

所有测试跑完耗时是8ms,只优于62.5%的算法。注意这里的问题是,我前面说过,我们原则是不改变原字符串,那么返回的字符串就必然是动态分配的。所以和前面38%的算法的区别主要是动态分配内存的开销上。不信你可以试试,在原字符串上直接操作,只需要很简单的修改就可以,这里不演示,有兴趣的朋友可以自己尝试。

python语言的实现:

思路一样,显示将字符串按照空格分隔成一个个的word。对于每个word用切片来翻转即可。

标签: #c语言字符翻转