当前位置: 首页 > 科技观察

今日算法:翻转字符串中的单词

时间:2023-03-17 21:29:54 科技观察

给定一个字符串,将字符串中的每个单词一个一个地翻转。示例1:输入:“theskyisblue”输出:“blueisskythe”示例2:输入:“helloworld!”输出:"world!hello"解释:输入的字符串前后可以包含多余的空格,但不能包含反转的字符。示例3:输入:“agoodexample”输出:“examplegooda”解释:如果两个单词之间有多余的空格,则将反向单词之间的空格减少到只有一个。解释:没有空格字符组成一个词。输入字符串前后可以包含额外的空格,但反转的字符不能。如果两个单词之间有多余的空格,则将反向单词之间的空格减少到只有一个。方案一:正则+JSAPIvarreverseWords=function(s){returns.trim().replace(/\s+/g,'').split('').reverse().join('')};Solution2:Double-endedqueue(donotuseAPI)双端队列,顾名思义就是两端都可以入队。解题思路:先去掉字符串左右空格,逐个读取字符串中的每个单词,依次放入双端队列的对端,将队列转换成字符串输出(空格用作分隔符)绘图理解:代码实现:varreverseWords=function(s){letleft=0letright=s.length-1letqueue=[]letword=''while(s.charAt(left)==='')left++while(s.charAt(right)==='')right--while(left<=right){letchar=s.charAt(left)if(char===''&&word){queue.unshift(word)word=''}elseif(char!==''){word+=char}left++}queue.unshift(word)returnqueue.join('')};