
本文共 802 字,大约阅读时间需要 2 分钟。
问题描述
给定一个字符串,任务是逐个翻转字符串中的每个单词。
示例1
输入: “the sky is blue”
输出: “blue is sky the”
详细说明:输入字符串中的每个单词会被逐个反转,反转后的结果中的单词之间保留一个空格。需要注意,如果有多余的空格,将在反转后去掉,确保每个单词之间只保留一个空格。
示例2
输入: “ hello world! ”
输出: “world! hello”
解释:输入字符串最前面或者最后面可能会包含多余的空格,但反转后的字符串不能包含这些前后的空格。反转后的单词之间只保留一个空格。
示例3
输入: “a good example”
输出: “example good a”
解释:如果输入字符串中的单词之间有多余的空格,反转后的单词之间只保留一个空格。
算法思想
本题的难点在于处理字符串中的空格问题。直接使用split函数分割字符串是无法正常工作的,因为split函数无法区分单词之间的多个空格。为了解决这个问题,可以采用正则表达式来确保分割正确。正则表达式“\s+”表示一个或多个空格,因此可以通过split函数正确地将字符串分割成单词数组。此外,为了去掉字符串前面的和后面的空格,可以使用trim函数。
代码实现
public class Solution { public String reverseWords(String s) { if (s != null) { s = s.trim(); } String[] strs = s.split("\s+"); String result = strs[strs.length - 1]; for (int i = strs.length - 2; i >= 0; i--) { result = result + " " + strs[i]; } return result; } }
发表评论
最新留言
关于作者
