在有些题目中打印简单图形必须使用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(" "); }ans.append(a.substring(1001-n,1001));ans.append(" "); 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(" "); }System.out.println(ans.toString()); // long end = System.currentTimeMillis(); // System.out.println((end-start)*1.0000/1000+"s"); sc.close(); } }