程序设计(可用任何编程语言实现)
前后颠倒输入的英文中的单词位置,标点符号(只可以出现在句尾)位置不变,如输入"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());
}