1031. Hello World for U (20)
Given any string of N (>=5) characters, you are asked to form the characters into the shape of U. For example, “helloworld” can be printed as:
h d
e l
l r
lowo
That is, the characters must be printed in the original order, starting top-down from the left vertical line with n1 characters, then left to right along the bottom line with n2 characters, and finally bottom-up along the vertical line with n3 characters. And more, we would like U to be as squared as possible — that is, it must be satisfied that n1 = n3 = max { k| k <= n2 for all 3 <= n2 <= N } with n1 + n2 + n3 – 2 = N.
Input Specification:
Each input file contains one test case. Each case contains one string with no less than 5 and no more than 80 characters in a line. The string contains no white space.
Output Specification:
For each test case, print the input string in the shape of U as specified in the description.
Sample Input:
helloworld!
Sample Output:
h !
e d
l l
lowor
题目大意:用所给字符串按U型输出。n1和n3是左右两条竖线从上到下的字符个数,n2是底部横线从左到右的字符个数。
要求:
1. n1 == n3
2. n2 >= n1
3. n1为在满足上述条件的情况下的最大值
PS:感谢github用户@fs19910227提供的pull request~
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); final char[] chars = reader.readLine().toCharArray(); final int length = chars.length + 2; final int rows = length / 3; final int columns = length / 3 + length % 3; final char[][] table = new char[rows][columns]; int index = 0; //left for (int i = 0; i < rows; i++, index++) { table[i][0] = chars[index]; } //bottom for (int i = 1; i < columns - 1; i++, index++) { table[rows - 1][i] = chars[index]; } //right for (int i = rows - 1; i >= 0; i--, index++) { table[i][columns - 1] = chars[index]; } for (int i = 0; i < rows; i++) { for (int j = 0; j < columns; j++) { char c = table[i][j] == 0 ? ' ' : table[i][j]; System.out.printf("%c", c); if (j == columns - 1) { System.out.println(); } } } } } |
❤ 点击这里 -> 订阅《PAT | 蓝桥 | LeetCode学习路径 & 刷题经验》by 柳婼