此题有两个坑:
1、一行中不能出现多余空格,题中没有说清。
2、不论是否多余字符,都要显示剩余出字符数,比如0个,也要显示。
Java代码:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc =new Scanner(System.in);
String[] firstLine =sc.nextLine().split(" ");
int n =Integer.parseInt(firstLine[0]);
char c =firstLine[1].charAt(0);
int i=1;
for(;;i++){
if(n<2*(i+1)*(i+1)-1){
break;
}
}
for(int j=i;j>0;j--){
for(int blank=i-j;blank>0;blank--){
System.out.print(" ");
}
for(int count=j*2-1;count>0;count--){
System.out.print(c);
}
System.out.println();
}
for(int j=2;j<=i;j++){
for(int blank=i-j;blank>0;blank--){
System.out.print(" ");
}
for(int count=j*2-1;count>0;count--){
System.out.print(c);
}
System.out.println();
}
System.out.println(n-(2*i*i-1));
}
}