逻辑很简单,首先尝试使用StringBuilder的反向创建最后一行.然后从第一行到最后一行打印每一行.
最后一行很简单.
从第一行到最后一行 – 1,我们只需要将距离等于0,1,2 ……的那些字符打印到最后一行的中心.
public void printTriangle(String input) {
String tmp = input.substring(1);//Take the suffix
StringBuilder builder = new StringBuilder(tmp);
builder = builder.reverse().append(input);//Reverse, then append it
String line = builder.toString();//This is the last line
for(int i = 0; i < input.length(); i++){
for(int j = 0; j < line.length(); j++){
//Print the last line, or those that have distance equals i to the center of the last line
if(i + 1 == input.length() || Math.abs(j - line.length()/2) == i){
System.out.print(line.charAt(j));
}else{
System.out.print(" ");
}
}
System.out.println();
}
}
输入
COMPUTER
产量
C
O O
M M
P P
U U
T T
E E
RETUPMOCOMPUTER
输入
STACKOVERFLOW
产量
S
T T
A A
C C
K K
O O
V V
E E
R R
F F
L L
O O
WOLFREVOKCATSTACKOVERFLOW