程序设计(可用任何编程语言实现)
前后颠倒输入的英文中的单词位置,标点符号(只可以出现在句尾)位置不变,如输入"Hello how are
you!"输出应该为“you are how Hello!"。
public class fanzhuan { public static void reverse(char[] input,int start,int end){ char temp=0; while(start<end){ temp=input[start]; input[start]=input[end]; input[end]=temp; start++; end--; } } public static void rotateWord(char[] input){ int end=input.length-1; boolean flag=false; if ((input[end]>='a'&&input[end]<='z')||(input[end]>='A'&&input[end]<='Z')){ } else { flag=true; end--; } reverse(input,0,end); int l=-1; int r=-1; for (int i=0;i<=end;i++){ if (input[i]!=' '){ l=i==0||input[i-1]==' '?i:l; r=i==end||input[i+1]==' '?i:r; } if (l!=-1&&r!=-1){ reverse(input,l,r); l=-1; r=-1; } } } public static void main(String[] args) { String test="hello word!"; char[] test1=test.toCharArray(); rotateWord(test1); String test2=String.valueOf(test1); System.out.println(test2); } }
@Test public void test7(){ String a = "Hello how are you!"; StringBuffer sb = new StringBuffer(); char last = a.charAt(a.length()-1); //Unicode 编码并不只是为某个字符简单定义了一个编码,而且还将其进行了归类。 //这里24表示标点符号这一类型 if(Character.getType(last)==24){ a = a.substring(0, a.length()-1); } String[] splits = a.split("\\s"); for (int i = splits.length-1; i >= 0; i--) { sb.append(splits[i]+(i==0?"":" ")); } sb.append(last); System.out.println(sb.toString()); }