团队天梯赛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]);
}
}
}
4、总结
该题目的是对题目信息的解读,考察阅读能力,以及提出功能,对于功能的实现能力,对字符、字符串等api等掌握和使用的熟练程度都会影响做题的时间。
❤️来自专栏《LeetCode基础算法题》欢迎订阅❤️
厂长写博客目的初衷很简单,希望大家在学习的过程中少走弯路,多学一些东西,对自己有帮助的留下你的赞赞👍或者关注➕都是对我最大的支持,你的关注和点赞给厂长每天更文的动力。
对文章其中一部分不理解,都可以评论区回复我,我们来一起讨论,共同学习,一起进步!