第一句子网 - 唯美句子、句子迷、好句子大全
第一句子网 > 【Java】翻转字符串中的每个单词

【Java】翻转字符串中的每个单词

时间:2022-05-17 19:28:00

相关推荐

【Java】翻转字符串中的每个单词

一位CSDN的朋友在Blink区问的问题

白天确实没时间详解这个题,晚上来解一下(Java语言描述)。

这里不清楚引号算不算,就姑且当没有引号来处理。

分析

很容易想到的是用String的split()方法,因为可以分隔空格,然后形成一个数组,反向遍历就行。

但该想法不够成熟(我理解答主是为了快速给出简洁的思路而不是不会),这样有几个问题:

题干给的意思是首尾可以直接空,但是你不能把它算上,所以首尾必须先排掉空白字符。题目中的空白字符可以有多个,必须当做一个处理。反向逆序输出收尾字符不能是空格(即不可简单的循环,str+" ")

这就要求我们认真的分析这个题,在获取输入以后,该去做什么。

首先应该是去掉首尾的空白字符,用trim()然后用split()分割,但是分割符不是" “而是”\s+",这是简单的正则表达式,表示任意数量(1~n)的空白字符。随后生成的String数组再进行逆序遍历就行了,建议用StringBuilder,如果你真的看过String加法运算符的实现机理是多么麻烦的话。再就是注意末尾不带空格。

编程实现

import java.util.Scanner;public class SplitSpacesTest {public static void main(String[] args) {//获取输入Scanner scan = new Scanner(System.in);String str = scan.nextLine();//先去掉收尾空格,再去以任意个数空白符作为分隔符(基于正则表达式)String[] strArr = str.trim().split("\\s+");//创建StringBuilder对象,不支持多线程(支持也没用,白费性能)StringBuilder builder = new StringBuilder("");//获取数组长度后面会用int len = strArr.length;//数组空就不做这种处理if (len > 0) {for (int i = len-1; i > 0; i--) {builder.append(strArr[i] + " ");}builder.append(strArr[0]);}//不论空不空,输出个结果就行System.out.println(builder.toString());//关闭输入流scan.close();}}

感想

简单的问题,但是想要处理的没有什么毛病却不简单,我们还是要大胆地多去尝试、仔细地分析判断!

匆忙完成,不足之处还请指出,感谢。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。