【华为OJ13】句子逆序

    xiaoxiao2022-06-30  56

    题目描述

    将一个英文语句以单词为单位逆序排放。例如“I am a boy”,逆序排放后为“boy a am I”

    所有单词之间用一个空格隔开,语句中除了英文字母外,不再包含其他字符

    import java.util.Scanner; public class Main{ public static String ReverseString(String str){ if(str==null ||str.length()<=0) return null; char[] strChar=str.toCharArray(); //1 先反转整个句子:yob a ma I Reverse(strChar,0,strChar.length-1); //2 再对每一段进行反转:双指针思想,当i指针碰到空格的时候,就反转从j指针到i指针-1段的字符串 // 反转后,j指针指向i+1(期空格前一个字符)当做下次反转的起点,而i指针继续右移, // 直到碰到空格 int j=0; for(int i=0;i<strChar.length;i++){ if(strChar[i]==' ' || i==strChar.length-1){ //如果到了字符串结尾,这时没有空格了,要单独判断一下 if(i==strChar.length-1){ Reverse(strChar,j,i); return String.valueOf(strChar); } Reverse(strChar,j,i-1); j=i+1; } } return String.valueOf(strChar); } public static void Reverse(char[] strChar,int begin,int end ){ while(begin < end){ char temp=strChar[begin]; strChar[begin]=strChar[end]; strChar[end]=temp; begin++; end--; } } public static void main(String[] args){ Scanner sc=new Scanner(System.in); while(sc.hasNext()){ String str=sc.nextLine(); System.out.print(ReverseString(str)); } sc.close(); } }

    转载请注明原文地址: https://ju.6miu.com/read-1126053.html

    最新回复(0)