6.翻转字符串片段

输入一个英文文章片段翻转指定区域的单词顺序标点符号和普通字母一样处理
例如输入字符串
I am a developer.
0
3
则输出 developer. a am I

输入描述
使用换行隔开3个参数
第一个参数为文章内容 即英文字符串
第二个参数为翻转起始单词下标,下标从0开始
第三个参数为结束单词下标

输出描述
翻转后英文文章片段每个单词之间以一个半角空格分割输出

 

输入
  hello world!
0
1                                                                            
输出
world! hello

输入字符串可以在前面或者后面包含多个空格但是翻转后的字符不能包括

指定反转区间只有一个单词或无有效单词则输出EMPTY

 

点击查看代码

import java.util.*;

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

        String[] split = sc.nextLine().trim().split("\\s+");
        int start = Integer.parseInt(sc.nextLine());
        int end = Integer.parseInt(sc.nextLine());

        //处理特殊情况
        if(end - start < 1){
            System.out.println("EMPTY");
            return ;
        }

        int j = end;
        StringBuilder sb = new StringBuilder();
        for(int i = 0; i < split.length; i++){
            if(i >= start && i <= end){
                sb.append(split[j--]).append(" ");
            }else{
                sb.append(split[i]).append(" ");
            }
        }

        String res = sb.toString().trim();
        System.out.println(res);
    }
}

 

注意:

1.在接收字符串数组时,加上了一个 trim() , 如果没加会如何?

 split("\\s+")  ==》 以一个或多个空格切割形成字符串数组,所以前面的两个空格也会切一刀,形成了两个数据: “”  和 hello

 

 

2.第二处需要好好体会的地方:

if条件中,只是起到了定位区间范围的作用,翻转是通过split[j--] 来实现的,当不在这个范围内时,i 起到了定位元素的作用!

 

posted @ 2022-03-24 20:08  Jukim  阅读(523)  评论(0编辑  收藏  举报