L1-023 输出GPLT(Java)及快速输入
给定一个长度不超过10000的、仅由英文字母构成的字符串。请将字符重新调整顺序,按GPLTGPLT…这样的顺序输出,并忽略其它字符。当然,四种字符(不区分大小写)的个数不一定是一样多的,若某种字符已经输出完,则余下的字符仍按GPLT的顺序打印,直到所有字符都被输出。
输入格式:
输入在一行中给出一个长度不超过10000的、仅由英文字母构成的非空字符串。
输出格式:
在一行中按题目要求输出排序后的字符串。题目保证输出非空。
输入样例:
pcTclnGloRgLrtLhgljkLhGFauPewSKgt
输出样例:
GPLTGPLTGLTGLGLL
解题
重点在于按照“GPLT”顺序的输出。利用“toUpperCase()“” 方法用于把字符串全部转换为大写,然后先遍历字符串记录每个字符的个数后依次输出。
代码如下:
import java.io.*;
public class Main {
public static void main(String[] args) throws Exception{
BufferedReader bu = new BufferedReader(new InputStreamReader(System.in));
String str = bu.readLine().toUpperCase();
int G = 0,P=0,L=0,T=0;
for(int i=0; i<str.length(); i++) {
if(str.charAt(i) == 'G') {
G++;
} else if (str.charAt(i) == 'P') {
P++;
} else if (str.charAt(i) == 'L') {
L++;
} else if (str.charAt(i) == 'T') {
T++;
} else {
continue;
}
}
while (G > 0 || P> 0 || L> 0 || T > 0) {
if (G > 0) {
System.out.print('G');
G--;
}
if (P > 0) {
System.out.print('P');
P--;
}
if (L > 0) {
System.out.print('L');
L--;
}
if (T> 0) {
System.out.print('T');
T--;
}
}
}
}
快速输入
java.util.Scanner类是一个简单的文本扫描类,它可以解析基本数据类型和字符串它以空白来区隔每一个输入字符串,在某些时候并不适用,例如:当使用者可能输入一个字符串,中间会包括空白字元,就不能获得完整的字符串。
java.io.BufferedReader类是按行读取,同时为了能够高效的读取字符序列,从字符输入流和字符缓冲区读取文本,因此BufferedReader 的效率比Scanner高。
一般会如下定义:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;//或者直接用 “import java.io.*;”代替
public class Main{
public static void main(String[] args) throws IOException {
BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));
String str=reader.readLine();
System.out.println(str);
}
}
import java.io.StreamTokenizer类可以将任意的输入流分割为一系列标记
StreamTokenizer只能接收数字或字母,如果输入除空格和回车以外的字符(如:!@#$%^&*()[]{})无法识别,会显示null
StreamTokenizer可以获取输入流并根据空格和回车分割成Token(标记),用nextToken方法读取下一个标记
如果标记是字符串,用st.sval获取标记,如果是数字用st.nval获取标记,st.navl是double类型
例如:
import java.io.*;
public class Test {
public static void main(String[] args) throws IOException {
StreamTokenizer st =new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
st.nextToken();
String s=st.sval;
System.out.println(s);
st.nextToken();
double n=st.nval;
System.out.println(n);
}
}
输入样例:
hello 1234
输出样例:
hello
1234.0
输入样例:
hello1234
输出样例:
hello1234