在有些题目中打印简单图形必须使用StringBuilder或者StringBuffer,否则会运行超时(用String都会超时)。
因为在题目的要求中说到输入的n是小于1000的,用双重循环就会超时,用单层循环的String也会超时,因为+=的次数有点多了。
传说中的简单图形:
Java代码如下:
主要用了substring方法和append
import java.util.Scanner;
public class Main{
public static void main(String []args){
Scanner sc = new Scanner(System.in);
StringBuilder s = new StringBuilder("");
// long start = System.currentTimeMillis();
int n =sc.nextInt();
for(int i=0;i<1002;i++){
s.append(" ");
} StringBuilder a = new StringBuilder("");
for(int i=0;i<1002;i++){
a.append("*");
}
StringBuilder ans = new StringBuilder("");
for(int i=1;i<=n/2;i++){
ans.append(s.substring(1001-n/2-1+i,1001));
ans.append(a.substring(1001-2*i+1,1001));
ans.append("\n");
}ans.append(a.substring(1001-n,1001));ans.append("\n");
for(int i=n/2;i>=1;i--){
ans.append(s.substring(1001-n/2-1+i,1001));
ans.append(a.substring(1001-2*i+1,1001));
ans.append("\n");
}System.out.println(ans.toString());
// long end = System.currentTimeMillis();
// System.out.println((end-start)*1.0000/1000+"s");
sc.close();
}
}
标签:StringBuilder,双重,System,1001,ans,图形,超时,append
来源: https://www.cnblogs.com/cstdio1/p/11638195.html