欢迎光临
我们一直在努力

每日算法题 5

题目

        151.反转字符串中的单词

要求

        给你一个字符串 s ,请你反转字符串中单词的顺序。单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。

注意:输入字符串 s中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。

示例

示例 1:

输入:s = "the sky is blue"
输出:"blue is sky the"

示例 2:

输入:s = "  hello world  "
输出:"world hello"
解释:反转后的字符串中不能存在前导空格和尾随空格。

思路

        我们首先想到的是要把每个单词当成独立的小个体,再进行反转,反转后的每个单词之间有一个空格;那么怎么把单词分开呢,在java中有个split()方法,该方法用于将字符串按指定分隔符拆分成字符串数组;那么如若给定的字符串首尾有空格怎么处理,在java中有个trim()方法,该方法用于去除字符串首尾的空白字符

        了解了单词分割+空格处理后,该如何反转呢,那么最简单的就是两两反转,直到最后两个反转完成;题目中要求输出由单个空格隔开的字符串,在java中有个join方法,可以将多个字符串用于指定的分隔符连接成一个新字符串(进行拼接)

代码

class Solution {
public String reverseWords(String s) {
String[] words=s.trim().split("\\\\s+");

int left=0,right=words.length-1;
while(left<right){
String temp=words[left];
words[left]=words[right];
words[right]=temp;
left++;
right–;
}
return String.join(" ",words);
}
}

小舟有话说

        这道题如果用java自带的方法并不难,如果想不到这些方法,自己可以借此机会总结一下常用的方法!相信自己,不要放弃每天刷题哦!!!

        你们的点赞、收藏和关注是我更新的动力,如果喜欢的话,请多多支持,关注我,下次找我不迷路

赞(0)
未经允许不得转载:171主机测评 » 每日算法题 5
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址