汕头网站建设开发,wordpress搜索功能加强,专业的建设网站,网站注册设计1、题干
给你一个字符串s #xff0c;请你反转字符串中单词的顺序。 单词是由非空格字符组成的字符串。s中使用至少一个空格将字符串中的单词分隔开。 返回单词顺序颠倒且单词之间用单个空格连接的结果字符串。
注意#xff1a;输入字符串 s中可能会存在前导空格、尾随空格…1、题干
给你一个字符串s 请你反转字符串中单词的顺序。 单词是由非空格字符组成的字符串。s中使用至少一个空格将字符串中的单词分隔开。 返回单词顺序颠倒且单词之间用单个空格连接的结果字符串。
注意输入字符串 s中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中单词间应当仅用单个空格分隔且不包含任何额外的空格。
示例 1 输入s “the sky is blue” 输出“blue is sky the”
示例 2 输入s hello world 输出“world hello” 解释反转后的字符串中不能存在前导空格和尾随空格。
示例 3 输入s “a good example” 输出“example good a” 解释如果两个单词间有多余的空格反转后的字符串需要将单词间的空格减少到仅有一个。
提示 1 s.length 104 s 包含英文大小写字母、数字和空格 ’ ’ s 中 至少存在一个 单词
2、解题
方法一逆序遍历比较 字符串逆序遍历当遇到非空格时插入临时字符串的头部遇到空格结束临时字符串的拼接。
代码示例
public static String reverseWords(String s) {StringBuilder result new StringBuilder();s s.trim();for (int i s.length() - 1; i 0; i--) {StringBuilder tempWord new StringBuilder();char c s.charAt(i);while (c ! i 0) {tempWord.insert(0, c);if (i 0) {i--;c s.charAt(i);} else {break;}}if (tempWord.length() 0) {result.append(tempWord).append( );}}return result.toString().trim();}方法二数组分割 使用空格进行数组分割当如果是空字符串时跳过手动添加空格。
代码示例
public static String reverseWords(String s) {StringBuilder result new StringBuilder();String[] s1 s.trim().split( );for (int i s1.length-1; i 0; i--) {if (!.equals(s1[i].trim())){result.append(s1[i]).append( );}}return result.toString().trim();}方法三正则表达式 使用正则表达式进行分割\s可以表示1个或多个空格分隔刚好分割后就不存在空字符串的数组。
代码示例
public static String reverseWords(String s) {s s.trim();// \\s 表示任意 空白字符 表示出现1次获取多次ListString wordList Arrays.asList(s.split(\\s));Collections.reverse(wordList);return String.join( ,wordList);}向阳出发Dare To Be