Printing string in rows and column pattern Java

前端 未结 7 2351
孤独总比滥情好
孤独总比滥情好 2021-02-07 14:31

i\'m just created a java project to print string that is given in rows and column just like matrix. Here\'s the output that i just made:

h e l l o 
_ w o r l 
d _         


        
7条回答
  •  自闭症患者
    2021-02-07 15:23

    Here's a one with a recursive approach,

    I am traversing the matrix in right -> down -> left -> up fashion on the boundaries

    Then change the size and do the same for inner boundaries,

    Matrix M would be a spiral matrix then of character indices Create spiral matrix C for characters by traversing matrix M.

    int m = 5;
    int n = 5;
    int limit = m * n;
    int[][] M = new int[m][n];
    public void spiral(int[][] M, int row, int col, int c, int start, int m, int n) {
        if (c > limit | row >= m | col >= n)
            return;
    
        if (M[row][col] == 0)
            M[row][col] = c;
    
        if (row == start) // go right
            spiral(M, row, col + 1, c + 1, start, m, n);
    
        if (col == n - 1) // go down
            spiral(M, row + 1, col, c + 1, start, m, n);
    
        if (row == m - 1 && col > start) // go left
            spiral(M, row, col - 1, c + 1, start, m, n);
    
        if (col == start && row >= start) // go up
            spiral(M, row - 1, col, c + 1, start, m, n);
        
    };
    spiral(M, 0, 0, 1, 0, m, n);
    
    for (int i = m - 1, x = 1, j = n - 1; i >= m - 2 && j >= n - 2; i--, j--, x++)
        spiral(M, x, x, M[x][x - 1] + 1, x, i, j);
    

    This would give you spiral Matrix M Output:

    1   2   3   4   5   
    16  17  18  19  6   
    15  24  25  20  7   
    14  23  22  21  8   
    13  12  11  10  9
    

    Then create a spiral matrix for characters using matrix M

    String string = "hello_world_its_beautiful";
    char[][] C = new char[size][size];
    for (int i = 0; i < size; i++) {
        for (int j = 0; j < size; j++)
            C[i][j] = string.charAt(M[i][j] - 1);
    }
    

    Output:

    h   e   l   l   o   
    _   b   e   a   _   
    s   u   l   u   w   
    t   f   i   t   o   
    i   _   d   l   r
    

提交回复
热议问题