Convert a String into a square matrix grid of characters

Given a string of length L. The task is to convert the string into a grid.

Examples:

Input : str = "haveaniceday"
Output :  have
          anic
          eday    

Explanation: k is the separator. If k is 4 then the output will be "have
          anic
          eday"

Input :str = "geeksforgeeks"
Output : geek
         sfor
         geek
         s

Note: & l = length of the string

Approach:

  1. Without using an inbuit function
  2. Make a 2d character array of (rows * column) size.
  3. Assign the value K which is a column value.
  4. Print the 2d character array.

Below is the implementation of the above approach.

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

#include <bits/stdc++.h>
using namespace std;
  
// Function to string into grid form
void gridStr(string str)
{
    int l = str.length();
    int k = 0, row, column;
    row = floor(sqrt(l));
    column = ceil(sqrt(l));
  
    if (row * column < l)
        row = column;
  
    char s[row][column];
    // convert the string into grid
    for (int i = 0; i < row; i++) {
        for (int j = 0; j < column; j++) {
            s[i][j] = str[k];
            k++;
        }
    }
  
    // Printing the grid
    for (int i = 0; i < row; i++) {
        for (int j = 0; j < column; j++) {
            if (s[i][j] == '\0')
                break;
            cout << s[i][j];
        }
        cout << endl;
    }
}
  
// Driver code
int main()
{
    string str = "GEEKSFORGEEKS";
    gridStr(str);
      
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java implementation of the
// above approach
class GFG
{
  
    // Function to string into grid form
    static void gridStr(String str)
    {
        int l = str.length();
        int k = 0, row, column;
        row = (int) Math.floor(Math.sqrt(l));
        column = (int) Math.ceil(Math.sqrt(l));
  
        if (row * column < l)
        {
            row = column;
        }
  
        char s[][] = new char[row][column];
          
        // convert the string into grid
        for (int i = 0; i < row; i++) 
        {
            for (int j = 0; j < column; j++) 
            {
                if(k < str.length())
                    s[i][j] = str.charAt(k);
                k++;
            }
        }
  
        // Printing the grid
        for (int i = 0; i < row; i++) 
        {
            for (int j = 0; j < column; j++)
            {
                if (s[i][j] == 0
                {
                    break;
                }
                System.out.print(s[i][j]);
            }
            System.out.println("");
        }
    }
  
    // Driver code
    public static void main(String[] args)
    {
        String str = "GEEKSFORGEEKS";
        gridStr(str);
    }
}
  
//This code is contributed by Rajput-Ji

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 implementation of the
# above approach
  
  
  
# Function to string into grid form 
def function(str, k):
  
    for i in range(len(str)):
        if i %k == 0:
            sub = str[i:i+k]
            lst = []
            for j in sub:
                lst.append(j)
            print(' '.join(lst))
  
function("GEEKSFORGEEKS", 5)
  
/* This code contributed by nsew1999gokulcvan */

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# implementation of the
// above approach
using System;
  
class GFG
{
  
    // Function to string into grid form
    static void gridStr(String str)
    {
        int l = str.Length;
        int k = 0, row, column;
        row = (int) Math.Floor(Math.Sqrt(l));
        column = (int) Math.Ceiling(Math.Sqrt(l));
  
        if (row * column < l)
        {
            row = column;
        }
  
        char [,]s = new char[row,column];
          
        // convert the string into grid
        for (int i = 0; i < row; i++) 
        {
            for (int j = 0; j < column; j++) 
            {
                if(k < str.Length)
                    s[i,j] = str[k];
                k++;
            }
        }
  
        // Printing the grid
        for (int i = 0; i < row; i++) 
        {
            for (int j = 0; j < column; j++)
            {
                if (s[i, j] == 0) 
                {
                    break;
                }
                Console.Write(s[i, j]);
            }
            Console.WriteLine("");
        }
    }
  
    // Driver code
    public static void Main()
    {
        String str = "GEEKSFORGEEKS";
        gridStr(str);
    }
}
  
/* This code contributed by PrinciRaj1992 */

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// PHP implementation of the
// above approach
  
// Function to string into grid form
function gridStr($str)
{
    $l = strlen($str);
    $k = 0;
    $row = floor(sqrt($l));
    $column = ceil(sqrt($l));
  
    if ($row * $column < $l)
        $row = $column;
  
    $s = array_fill(0, $row
         array_fill(0, $column, ""));
    // convert the string into grid
    for ($i = 0; $i < $row; $i++) 
    {
        for ($j = 0; $j < $column; $j++)
        {
            if(!empty($str[$k]))
            $s[$i][$j] = $str[$k];
            $k++;
        }
    }
  
    // Printing the grid
    for ($i = 0; $i < $row; $i++)
    {
        for ($j = 0; $j < $column; $j++) 
        {
            if ($s[$i][$j] == '\0')
                break;
            echo $s[$i][$j];
        }
        echo "\n";
    }
}
  
// Driver code
$str = "GEEKSFORGEEKS";
gridStr($str);
  
// This code is contributed by mits
?>

chevron_right


Output:

GEEK
SFOR
GEEK
S

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.




My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.