计数后打印垂直柱状图(洛谷P1598题题解,Java语言描述)
生活随笔
收集整理的這篇文章主要介紹了
计数后打印垂直柱状图(洛谷P1598题题解,Java语言描述)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
前言
這題挺好玩的,打印出來頗有老式MP4播放 ?Music? 的感覺
題目要求
P1598題目鏈接
分析
這題看著挺爽,問題是怎么實現(xiàn)呢?
我們先是要讀進來這四行數(shù)據(jù)(題干說了就是4行),然后變?yōu)閏har[],進行一下大寫字母字符的過濾,計數(shù)結(jié)果裝在長度為26的int[]里。
我們想知道有多少行,就必須知道最多的counter。
根據(jù)數(shù)據(jù)結(jié)構(gòu)里學(xué)的內(nèi)置size屬性等操作,我們可以直接在添加的時候更新max變量,這樣就不用在全部計數(shù)完成以后再次遍歷數(shù)組啦。
當(dāng)然本題int[]長度只有26,怎么做都可以啦。
打印的時候就要進行一下簡單計算了,最后除去尾部的多余空格即可。
具體細節(jié)請看代碼~~
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;//統(tǒng)計數(shù)據(jù)for (int i = 0; i < 4; i++) {for (char c : scanner.nextLine().toCharArray()) {if (c >= 'A' && c <= 'Z') {char_counter[c-'A']++;int temp_counter = char_counter[c-'A'];if (temp_counter > max) {//置新最大數(shù)值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");} }怎么樣?蠻酷的吧,快來試試吧!!
總結(jié)
以上是生活随笔為你收集整理的计数后打印垂直柱状图(洛谷P1598题题解,Java语言描述)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Doxygen with Graphvi
- 下一篇: 【Java】Optional容器