题解_翻转字符串中各单词的字母顺序

一、题目描述

编写一个方法,将一段文本中的各个单词的字母顺序翻转

  • 样例输入:“I like writing code best”
  • 样例输出:“I ekil gnitirw edoc tseb”

二、解决思路

1 将空格作为分隔符分割字符串,得到字符串数组

2 倒序遍历字符串数组,将每个字符串加入StringBuilder字符串中

3 翻转StringBuilder字符串

三、主要方法

public String[] split​(String regex, int limit)

功能: 按给定规则拆分字符串,返回字符串数组

参数:

  • regex:作为分隔标志的正则表达式
  • limit:控制拆分次数,会影响结果数组的长度

如果limit为正,则模式将应用最多limit - 1
数组长度不会超过limit
并且数组的最后一个元素将包含超出最后一个匹配分隔符的所有输入

如果limit为0,则模式将尽可能多地应用,数组可以具有任何长度,并且将丢弃尾随空字符串

如果limit为负,则模式将尽可能多地应用,并且数组可以具有任何长度

本题案例

输入

+号表示空格

++I+Love+Xiamen++!+

分割

在分隔符任意一端,若没有除了分隔符以外的字符,将“分割”产生空字符串“”
空字符串也占用字符串数组长度,只不过在打印空字符串时将不会有任何显示

"" + "" + I + Love + Xiamen + "" + ! + ""

// 在数组中存储的是:
"" "" I Love Xiamen "" !

倒序遍历,并在除了最后一个元素的每个元素后面添加空格,加入StringBuilder字符串中

! + "" + Xiamen + Love + I + "" +  ""

翻转

"" + "" + I + evoL + nemaiX +"" + !

输出
空字符串在输出后不会有任何显示

++I+evoL+nemaiX++!

四、源代码

    public static void main(String[] args) {
     
        Scanner in = new Scanner(System.in);

        // 提示用户输入字符串
        System.out.println("请输入字符串:");
        String text = in.nextLine();

        // 处理输入的字符串
        // 1. 分割字符串
        String[] texts = text.split(" ");
        StringBuilder sb = new StringBuilder();
        for (int i = texts.length - 1, j = 0; i >= 0; i--) {
     
            // 2. 倒序遍历每个字符串,加入到StringBuilder对象
            sb.append(texts[i]);
            if (i == 0) break;
            // 3. 除了最后一个元素,每个元素加入后,还需加入一个空格
            sb.append(" ");
        }
        //4. 翻转字符串
        sb = sb.reverse();

        //提示输出结果
        System.out.println("翻转后的字符串为:");
        System.out.println(sb.toString());
        in.close();
    }


五、运行结果

题解_翻转字符串中各单词的字母顺序_第1张图片

你可能感兴趣的:(题解_翻转字符串中各单词的字母顺序)