Una práctica todos los días (cambia el orden de las palabras en la oración, pero el orden de los caracteres en la palabra no cambia) (tres ideas)

Descripción del tema: invertir el orden de las palabras

  • Ingrese una oración en inglés e invierta el orden de las palabras en la oración, pero el orden de los caracteres en la palabra permanece sin cambios.

  • Para simplificar, los signos de puntuación se tratan como letras ordinarias. Por ejemplo, ingrese la cadena "Soy un estudiante.", Luego envíe "estudiante. Soy yo".

  • Nota: No está permitido utilizar el método split () de la clase String para cortar

  • Idea de uso sugerida 3

Idea 1:

public class Program020 {
    
    

	public static void main(String[] args) {
    
    
		System.out.println(reverseWord("I am a student. ")); // 输出结果:student. a am I
		System.out.println(reverseWord("the sky is blue")); // 输出结果:blue is sky the
		System.out.println(reverseWord(" hello world! ")); // 输出结果:world! hello
	}

	/**
	 * 
	 * @param str 需要进行单词翻转的原字符串
	 * @return 翻转单词后的字符串结果
	 */

public static String reverseWord(String str) {
    
    
		
		//用于保存需翻转的单词
		StringBuilder sb=new StringBuilder();
		
		//用于保存反转字符串
		StringBuilder reverseSb=new StringBuilder();
		
		//遍历字符串
		for(int i=str.length()-1;i>=0;i--) {
    
    
			
			//判断当前字符是否为空字符
			if(str.charAt(i)!=' ') {
    
    
				//将其追加至当前sb(该单词字符串)
				sb.append(str.charAt(i));
				//判断当前字符是否是第1位
				if(i==0) {
    
    
					//翻转当前单词
					sb.reverse();
					//追加至sb
					reverseSb.append(sb);
					
				
				}
			}
			
			//若当前字符为空字符且不是最后一个字符
			if(str.charAt(i)== ' '&&i!=str.length()-1) {
    
    
				//翻转当前单词
				sb.reverse();
				//追加至sb1
				reverseSb.append(sb);
				reverseSb.append(' ');
				//清空当前单词字符串
				sb=new StringBuilder();
			
			}
		}
	
		return reverseSb.toString();
	}

}

Idea 2:

public class Program020 {
    
    

	public static void main(String[] args) {
    
    
		System.out.println(reverseWord("I am a student. ")); // 输出结果:student. a am I
		System.out.println(reverseWord("the sky is blue")); // 输出结果:blue is sky the
		System.out.println(reverseWord(" hello world! ")); // 输出结果:world! hello
	}

	/**
	 * 
	 * @param str 需要进行单词翻转的原字符串
	 * @return 翻转单词后的字符串结果
	 */
public static String reverseWord(String str) {
    
    
		
		//将String类型的str转换成StringBuilder类型
		StringBuilder sb=new StringBuilder(str);
		
		//将sb反转( .tneduts a ma I)
		sb.reverse();
		
		//用于保存反转字符串的“单词”,
		StringBuilder sb1=new StringBuilder();
		
		//遍历sb
		for(int i=0;i<str.length();i++) {
    
    
			
			//判断当前字符是否为空字符
			if(sb.charAt(i)!=' ') {
    
    
				//将其追加至当前sb1(该单词字符串)
				sb1.append(sb.charAt(i));
				//判断当前字符是否是最后一位
				if(i==str.length()-1) {
    
    
					//翻转当前单词
					sb1.reverse();
					//追加至sb
					sb.append(sb1);
					
				
				}
			}
			
			//若当前字符为空字符且不是第一个字符
			if(sb.charAt(i)== ' '&&i!=0) {
    
    
				//翻转当前单词
				sb1.reverse();
				//追加至sb
				sb.append(sb1);
				sb.append(' ');
				//清空当前单词字符串
				sb1=new StringBuilder();
			
			}
		}
		
		//删除sb中前面的反转字符串(.tneduts a ma Istudent. a am I)
		sb.delete(0, str.length());
		
		return sb.toString();
	}
	

Idea 3:

public class Program020 {
    
    

	public static void main(String[] args) {
    
    
		System.out.println(reverseWord("I am a student. ")); // 输出结果:student. a am I
		System.out.println(reverseWord("the sky is blue")); // 输出结果:blue is sky the
		System.out.println(reverseWord(" hello world! ")); // 输出结果:world! hello
	}

	/**
	 * 
	 * @param str 需要进行单词翻转的原字符串
	 * @return 翻转单词后的字符串结果
	 */
	public static String reverseWord(String str) {
    
    
		//去除原字符串的左右两边空格
		str=str.trim();
		
		//使用StringJoiner收集翻转单词的结果,使用空格进行分隔
		StringJoiner joiner=new StringJoiner(" ");
		
		//从尾部开始,遍历字符串中的每个字符;endIndex记录每次开始下标的位置,用于方便截取
		for(int i=str.length()-1,endIndex=i;i>=0;i--) {
    
    
			//获取当前字符
			char currentChar=str.charAt(i);
			
			//判断当前字符是否为空格或者为第1个字符
			if(currentChar==' '||i==0) {
    
    
				//从当前位置i开始截取至endIndex,并连接至StringJoiner
				joiner.add(str.substring(i, endIndex+1).trim());
				
				//保存当前i的位置(即下次截取的结束位置)
				endIndex=i;
			}
		}
		return joiner.toString();
	}
}


Supongo que te gusta

Origin blog.csdn.net/weixin_51529267/article/details/113643236
Recomendado
Clasificación