Invertir el orden de las palabras de la oración según el rango del índice

Información del tema

Dada una oración, cada palabra en la oración está separada por un espacio, dado un rango de palabras, invierte el orden de las palabras en el rango. Por ejemplo, dada una oración soy un estudiante. Dado un rango de palabras de 1 a 3, el resultado después de voltear es i estudiante. A am

  • Ejemplo de entrada Soy un estudiante 1 3
  • Ejemplo de salida i estudiante. A am

respuesta

Según la información del tema, la siguiente información se puede derivar de forma aproximada:

  1. El programa debe recibir y utilizar la información de tres parámetros
  2. Las palabras están separadas por espacios. Después de dar la oración, debes usar split para dividir las palabras
  3. Recorre las palabras divididas e invierte el orden de las palabras en un rango determinado

codificación

package com.questionbank.nowcoder;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class ReverseControlWords {

	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String input;
	
		// 定义索引位置,方便接收参数值
		int index = 0;
		
		// 定义三个变量,分别接收句子,起始和结束索引范围
		String sentence = null;
		int start = 0;
		int end = 0;
		while ((input = br.readLine()) != null) {
			// 根据不同索引位置,将接收的输入值赋给不同变量
			if (index == 0) {
				sentence = input;
			} else if (index == 1) {
				start = Integer.valueOf(input);
			} else {
				// 在拿到第三个变量值后,进行逆序处理
				end = Integer.valueOf(input);
				reverseSentence(sentence, start, end);
			}
			
			// 参数位置后移
			index++;
			
			// 逆序后,索引置0
			if (index == 3) {
				index = 0;
			}
		}
	}
	
	public static void reverseSentence(String sentence, int start, int end) {
		String[] words = sentence.split(" ");
		StringBuilder sb = new StringBuilder();
		
		// 遍历单词数组
		for (int i=0; i<words.length; i++) {
			
			// i等于start且小于end时,对单词逆序处理
			if (i == start && i<end) {
				String tmp = words[i];
				words[i] = words[end];
				words[end] = tmp;
				
				// 逆序后,start位置后移,end位置前移
				start++;
				end--;
			}
			
			sb.append(words[i]).append(" ");
		}
		
		// 输出截取后的结果值
		System.out.println(sb.substring(0, sb.length()-1));
	}
}

 

Supongo que te gusta

Origin blog.csdn.net/magi1201/article/details/114462108
Recomendado
Clasificación