前言
这题挺好玩的,打印出来颇有老式MP4播放 ♪Music♪ 的感觉
题目要求P1598题目链接
这题看着挺爽,问题是怎么实现呢?
我们先是要读进来这四行数据(题干说了就是4行),然后变为char[],进行一下大写字母字符的过滤,计数结果装在长度为26的int[]里。
我们想知道有多少行,就必须知道最多的counter。 根据数据结构里学的内置size属性等操作,我们可以直接在添加的时候更新max变量,这样就不用在全部计数完成以后再次遍历数组啦。 当然本题int[]长度只有26,怎么做都可以啦。
打印的时候就要进行一下简单计算了,最后除去尾部的多余空格即可。 具体细节请看代码~~
AC代码(Java语言描述)import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int[] char_counter = new int[26];
int max = 0;
//统计数据
for (int i = 0; i = 'A' && c max) {
//置新最大数值
max = temp_counter;
}
}
}
}
scanner.close();
//处理打印
for (int i = max-1; i >= 0; i--) {
StringBuilder builder = new StringBuilder();
for (int j : char_counter) {
if (j - i > 0) {
builder.append("* ");
} else {
builder.append(" ");
}
}
//去除尾部空格
System.out.println(builder.substring(0, builder.length()-1));
}
System.out.println("A B C D E F G H I J K L M N O P Q R S T U V W X Y Z");
}
}