Java实现 蓝桥杯 算法提高 套正方形

试题 算法提高 套正方形

资源限制
时间限制:1.0s 内存限制:256.0MB
问题描述
  给定正方形边长width,如图按规律输出层层嵌套的正方形图形。
  注意,为让选手方便观看,下图和样例输出均使用“”代替空格,请选手输出的时候使用空格而不是“”。

width=6:

******

____

**

**

____

******
输入格式
  仅一行一个整数width。
输出格式
  按规律输出图形,不要输出多余空格。
样例输入
10
样例输出


________
******
_**
*
*
**
_
_**_
__**
*
******
*
________


数据规模和约定
  width满足width=4n+2,n为正整数。

且width<=50。

PS:这里用到的ListIterator,有一篇博客是介绍这种迭代器的
ListIterator(点这里)


import java.util.ArrayList;
import java.util.ListIterator;
import java.util.Scanner;

public class 套正方形 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        sc.close();
        ArrayList<String> list = new ArrayList<>();
        StringBuffer  s = new StringBuffer("");
        for (int i=0;i<n;i++) s=s.append("*");
        int l=1,r=n-2;
        String current=" ";
        list.add(s.toString());
        for (int i=1;i<n/2;i++){
            for (int j=l;j<r+1;j++){

                s.replace(j,j+1,current);
            }
            l++;r--;
            if(current.equals(" ")){
                current="*";
            }
            else{
                current=" ";
            }
            list.add(s.toString());
        }
        ListIterator listIterator =list.listIterator();
        while (listIterator.hasNext()) {
            System.out.println(listIterator.next());
        }
        while (listIterator.hasPrevious()) {
            System.out.println(listIterator.previous());
        }

    }
}

posted @ 2020-02-10 10:59  南墙1  阅读(44)  评论(0编辑  收藏  举报