百练OJ:2800:垂直直方图

题目连接:

http://bailian.openjudge.cn/practice/2800/

描述:输入4行全部由大写字母组成的文本,输出一个垂直直方图,给出每个字符出现的次数。注意:只用输出字符的出现次数,不用输出空白字符,数字或者标点符号的输出次数。
输入:输入包括4行由大写字母组成的文本,每行上字符的数目不超过80个。
输出:输出包括若干行。其中最后一行给出26个大写英文字母,这些字母之间用一个空格隔开。前面的几行包括空格和星号,每个字母出现几次,就在这个字母的上方输出一个星号。注意:输出的第一行不能是空行。

百练OJ:2800:垂直直方图_第1张图片

解题思路

本题思路:首先统计字符出现次数,然后创建矩阵,将该形式转换到矩阵当中。尤其要注意的是,在java中,对于没有赋值的char矩阵直接输出是不符合要求的。要输出真真正正的空格。

解题代码

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner input =new Scanner(System.in);
		String str="";
		String str1=input.nextLine();
		String str2=input.nextLine();
		String str3=input.nextLine();
		String str4=input.nextLine();
		str=str1+str2+str3+str4;
		int n=str.length();
		int[] lists=new int[26];
		
		for(int i=0;i='A'&&str.charAt(i)<='Z'){
				lists[str.charAt(i)-'A']++;
			}
		}
		int max=0;
		for(int i=0;i<26;i++){
			if(lists[i]>max){
				max=lists[i];
			}
		}
		char [][] c=new char [max+1][26];
		for(int j=0;j<26;j++){
			c[max][j]=(char) (j+'A');
		}
		for(int l=0;l<26;l++){
			for(int k=max-1;k>=max-lists[l];k--){
				c[k][l]='*';
			}
		}
		for(int a=0;a


你可能感兴趣的:(百练OJ与leetcode)