1.题目如下
2.程序代码如下
package pat_1043;
import java.util.Scanner;
import java.util.Collections;
import java.util.ArrayList;
//在PAT中把class名字改成Main以运行
public class testPractice1043 {
public static void main(String[] args) {
Scanner scn1=new Scanner(System.in); //输入字符串
String str1=scn1.nextLine();
int length=str1.length();
String[] s1=new String[10000];
int s=0;
//将每个字符分开,以字符串形式保存在数组中
for(int i=0;i<=length-1;i++) {
if(i<length-1) {
if(isno(str1.substring(i,i+1))) {
s1[s]=str1.substring(i,i+1);
s++;
}
}
else {
if(isno(str1.substring(i))) {
s1[s]=str1.substring(i);
s++;
}
}
}
/* //可以来检验自己是否成功转化
for(int i=0;i<s;i++) {
System.out.print(s1[i]);
}
*/
ArrayList<String> arraylist1=new ArrayList<String>();
//把字符串数组变为ArrayList,方便运算
for(int i=0;i<s;i++) {
arraylist1.add(s1[i]);
}
/*for(int i=0;i<s;i++) {
System.out.print(arraylist1.get(i));
}
*/
String [] temp=new String[] {"P","A","T","e","s","t"};
int temp1=0;
//当集合非空的时候,按照temp1所给的顺序,从0~5循环,每输出一个集合就remove一个元素,直到为空
while(!(arraylist1.isEmpty())) {
if(temp1==6) {
temp1=0;
}
for(int i=0;i<s;i++) {
//字符串的比较一定要用equals()来比较!!!!
//不要用==!!
if(arraylist1.get(i).equals(temp[temp1])) {
System.out.print(temp[temp1]);
arraylist1.remove(i);
s--;
temp1++;
break;
}
if(i==s-1 && !(arraylist1.get(i).equals(temp[temp1]))) {
temp1++;
break;
}
}
}
scn1.close();
}
static boolean isno(String x) {
if(x.charAt(0)=='P'||x.charAt(0)=='A'||x.charAt(0)=='T') {
return true;
}
else if(x.charAt(0)=='e'||x.charAt(0)=='s'||x.charAt(0)=='t') {
return true;
}
else {
return false;
}
}
}
3.感谢观看
若您有特别的建议和指正,欢迎在评论区给出!