0
题目链接:https://www.nowcoder.com/questionTerminal/1b1f87ef6e7d40529d82c96aef79e8a4
猿辅导公司的 N位(N>=4)研发同学组织了一次秋游活动,某同学带了个无人机在高空拍照,活动结束时,先拍了一张所有同学排成公司猴头Logo的照片, 接着有人提议再排成“猿”的首字母Y字形来拍一张合照。
用字符串中的每一个字符(不是换行符或结束符’\0’)代表一位老师,输出排好后的队形。要求 Y字除去中心点外,上下半部分等高,按照从左到右,从上到下进行排序。队形中没人的部分用空格占位。
输入数据保证可以排出一个完整的Y字,即长度为 3k+1 (k>=1)
例如: 7个 x ,排成队形为(为了方便说明,这里用‘-’代替空格):
x—x
-x-x
–x
–x
–x
输入描述:
输入数据有两行,第一行输入N(N<=1000),表示字符串长度。 第二行输入字符串。
输出描述:
用字符串表示的排好的队形,没人处用空格(' ')占位,行尾不能有多余字符,即每行最后一个字符(除了换行符以外),为字符串中代表该老师的字符。
示例1
输入
4 a3f/
输出
a 3 f /
示例2
输入
7 abcdefg
输出
a b c d e f g
示例3
输入
10 iiiiiiiiii
输出
i i i i i i i i i i
我自己写的思路答案-链接
/* * 这个题我是这么想的 * 要想组成Y,输入的数必须符合3k+1 (k>=1) * 下面咱们总结一下,假设用户输入的为num变量,简化用户输入的都为i,空格用-代替 * 所以当num=4的时候,也就是k=1。 * 是这样的 * i-i * i * 当num=7的时候,也就是k=2。 * i---i * -i-i * --i * --i * --i * 当num=10的时候,也就是k=3。 * i-----i * -i---i * --i-i * ---i * ---i * ---i * ---i * 等等 * 我们可以从这三个就可以看出,大家注意其实可以从单行一个字母把Y分为两个部分 * 比如k=1时,可以把1-1行Y分为上半部分 * 比如k=2时,可以把1-2行Y分为上半部分 * 比如k=3时,可以把1-3行Y分为上半部分 * 所以发现特点没,k的值就是标志Y的两个部分的分界线 * 然后我们要做的就是分两个部分进行打印,上半部分(行数=k)和下半部分(行数=k+1) * 我们首先看上半部分: * 上半部分的输出其实就是首先是每一行的第一个i前面输出a个空格,再输出i,然后中间去输出b个空格,再输出i * 关键就是我们去确定a和b * 大家可以看上面的找出规律,每一行每一行的第一个i前面输出a个空格的,a=2*(k-i)-1(i为当前每行的行数,从0开始) * 中间去输出b个空格,这个b=2*(k-i)-1(i为当前每行的行数,从0开始) * 然后就照着这个进行循环打印上半部分 * 下半部分简单 * 直接就是打印每一行的第一个i前面输出a个空格,这个a=k * 然后就结束了,下面是代码具体实现 */ public static void main(String[] args){ Scanner sc=new Scanner(System.in); //用户输入的数 int num=sc.nextInt(); if(num<4||(num-1)%3!=0) return; //计算出k int k=(num-1)/3; char[] nums=new char[num]; for(int i=0;i<num;i++){ String str=sc.next(); nums[i]=str.toCharArray()[0]; } //进行打印上半部分 int j=0; for(int i=0;i<k;i++) { //打印第i行的第一个字符前面的空格,空格数就为k-1也就是i int temp=i; while(temp>0) { System.out.print(" "); temp--; } //打印第i行的第一个字符 System.out.print(nums[j]); j++; //打印第i行的中间的空格 temp=2*(k-i)-1; while(temp>0) { System.out.print(" "); temp--; } //打印第i行的最后一个字符 System.out.print(nums[j]); j++; System.out.println(); } //进行打印下半部分 for(int i=0;i<k+1;i++) { int temp=k; while(temp>0) { System.out.print(" "); temp--; } System.out.print(nums[j]); j++; System.out.println(); } }
0