PAT 团队天梯赛L1-054 福到了 (15 分)

200 阅读2分钟

团队天梯赛L1-054 福到了 (15 分)

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第21天,点击查看活动详情

1、题目📑

“福”字倒着贴,寓意“福到”。不论到底算不算民俗,本题且请你编写程序,把各种汉字倒过来输出。这里要处理的每个汉字是由一个 N × N 的网格组成的,网格中的元素或者为字符 @ 或者为空格。而倒过来的汉字所用的字符由裁判指定。

输入格式:

输入在第一行中给出倒过来的汉字所用的字符、以及网格的规模 N (不超过100的正整数),其间以 1 个空格分隔;随后 N 行,每行给出 N 个字符,或者为 @ 或者为空格。

输出格式:

输出倒置的网格,如样例所示。但是,如果这个字正过来倒过去是一样的,就先输出bu yong dao le,然后再用输入指定的字符将其输出。

输入样例 1:

$ 9
 @  @@@@@
@@@  @@@ 
 @   @ @ 
@@@  @@@ 
@@@ @@@@@
@@@ @ @ @
@@@ @@@@@
 @  @ @ @
 @  @@@@@

输出样例 1:

$$$$$  $ 
$ $ $  $ 
$$$$$ $$$
$ $ $ $$$
$$$$$ $$$
 $$$  $$$
 $ $   $ 
 $$$  $$$
$$$$$  $ 

输入样例 2:

& 3
@@@
 @ 
@@@

输出样例 2:

bu yong dao le
&&&
 & 
&&&

2、思路🧠

方法

本题目考察对输入 next()nextLine() 输入的区别,同时还考察了对题目所说的文字颠倒,所谓的颠倒就是将该文字或者图案旋转180°,也就是所说的将图案水平竖直进行反转,这里就用到了StringBuffer中的字符串反转的API, reverse() 函数来进行反转操作。

这里非常巧妙地利用API中的 replace 替换函数,替换为题目中所需要的字符样式

废话少说~~~~~上代码!

3、代码👨‍💻

第一次commit AC

import java.util.*;
public class Main{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s = sc.next();
        int n = sc.nextInt();
        String arr[] = new String[n];
        String newarr[] = new String[n];
        sc.nextLine();
        for (int i = 0; i < arr.length; i++) {
            arr[i] = sc.nextLine();
        }
        boolean f = true;
        for (int i = arr.length - 1 ,j = 0; i >= 0; i--,j++) {
            StringBuffer sb = new StringBuffer(arr[j]);
            newarr[i] = sb.reverse().toString();
            if (!arr[i].equals(newarr[i])) {
                f = false;
            }
            newarr[i] = newarr[i].replace('@',s.charAt(0));
        }

        if (f) {
            System.out.println("bu yong dao le");
        }
        for (int i = 0; i < newarr.length; i++) {
            System.out.println(newarr[i]);
        }
    }
}

image-20220421213746112

4、总结

该题目的是对题目信息的解读,考察阅读能力,以及提出功能,对于功能的实现能力,对字符、字符串等api等掌握和使用的熟练程度都会影响做题的时间。

❤️‍来自专栏《LeetCode基础算法题》欢迎订阅❤️‍

厂长写博客目的初衷很简单,希望大家在学习的过程中少走弯路,多学一些东西,对自己有帮助的留下你的赞赞👍或者关注➕都是对我最大的支持,你的关注和点赞给厂长每天更文的动力。

对文章其中一部分不理解,都可以评论区回复我,我们来一起讨论,共同学习,一起进步!

原题链接:题目详情 - L1-054 福到了 (15 分) (pintia.cn)