信阳网站建设培训,网站设计怎么做好,手机编程网站,住房建设部投诉网站题目要求#xff1a;给定一个字符串#xff0c;将其中单词顺序反转#xff0c;且每个单词之间有且仅有一个空格。
思路#xff1a;因为本题没有限制空间复杂度#xff0c;所以首先想到的是用split直接分割单词#xff0c;然后将单词倒叙相加。
但如果想让空间复杂度为O…题目要求给定一个字符串将其中单词顺序反转且每个单词之间有且仅有一个空格。
思路因为本题没有限制空间复杂度所以首先想到的是用split直接分割单词然后将单词倒叙相加。
但如果想让空间复杂度为O(1)的话可以使用快慢指针慢指针指向的是最后实际存放的位置快指针进行判断实现不同处理。所以过程就应该为先去除多余空格然后整体反转再每个单词反转即可例如hello world - dlrow olleh -world hello但是实际实现是有些难度。
leetcode实战 代码实现 注其中
if (s[i] ! )
if (slow ! 0) s[slow] ;
第一个判断用来删除所有的空格第二个判断是用来在单词之间重新增加空格。
while (i s.size() s[i] ! )
此循环用来将单词插入若遇到空格说明单词结束重新开始下次for循环。
if (i s.size() || s[i] )
此处用来将每个单词反转成正确顺序。