Open In App

Print a String in wave pattern

Improve
Improve
Like Article
Like
Save
Share
Report

Given a string, you need to transform this string in the form of a wave pattern
 

Examples: 

Input : GeeksforGeeks, 2
Output :
G  e  s  o  G  e  s 
 e  k  f  r  e  k  

Input : GeeksforGeeks, 4
Output :
G      o      s 
 e    f  r    k  
  e  s    G  e   
   k      e    

C++




// CPP program to print wave pattern 
// of a given string
// This is a modified code of
  
#include<bits/stdc++.h>
using namespace std;
  
// Function that takes string and zigzag offset
void fun(string s, int n) 
{
    // if offset is 1
    if (n==1)             
    {
        // simply print the string and return
        cout << s;             
        return;
    }
  
    // Get length of the string
    int len = s.length(); 
      
    // Create a 2d character array
    char a[len][len] = { };
      
    // for counting the rows of the ZigZag
    int row = 0;         
    bool down;
      
    for (int i=0; i<len; i++)
    {
        // put characters in the matrix
        a[row][i] = s[i]; 
          
        // You have reached the bottom
        if (row==n-1)
            down = false;     
        else if (row==0)
            down = true;    
              
        (down)?(row++):(row--);
    }
      
    // Print the Zig-Zag String
    for (int i=0; i<n; i++)
    
        for (int j=0; j<len; j++)
        {
            cout<<a[i][j]<<" ";
        }
        cout<<endl;
    }
}
  
// Driver function
int main()
{
    string s = "GeeksforGeeks";
    int n = 3;
    fun(s, n);
}


Java




// Java program to print wave  
// pattern of a given string
import java.lang.*;
import java.util.*;
class GFG 
{
  
    // Function that takes 
    // string and zigzag offset
    static void fun(String s, int n) 
    {
          
    // if offset is 1
    if (n == 1)             
    {
        // simply print the
        // string and return
        System.out.print(s);             
        return;
    }
  
    // Get length of the string
    int len = s.length(); 
      
    // Create a 2d character array
    char [][]a = new char[len][len];
    char []c = s.toCharArray();
      
    // for counting the 
    // rows of the ZigZag
    int row = 0;         
    boolean down = true;
      
    for (int i = 0; i < len; i++)
    {
        // put characters in
        // the matrix
        a[row][i] = c[i]; 
          
        // You have reached
        // the bottom
        if (row == n - 1)
            down = false;     
        else if (row == 0)
            down = true
              
        if(down)
            row++;
        else
            row--;
    }
      
    // Print the Zig-Zag String
    for (int i = 0; i < n; i++)
    
        for (int j = 0; j < len; j++)
        {
            System.out.print(a[i][j] + " ");
        }
        System.out.println();
    }
    }
      
    // Driver Code
    public static void main(String[] args)
    {
        String s = "GeeksforGeeks";
        int n = 3;
        fun(s, n);
    }
}
  
// This code is contributed 
// by ChitraNayal


Python 3




# Function that takes string
# and zigzag offset
def fun(s, n):
      
    # if offset is 1
    if (n == 1):
          
        # simply print the
        # string and return
        print(s)             
        return
  
    # Get length of the string
    l = len(s)
      
    # Create a 2d character array
    a = [[" " for x in range(l)] for y in range(l)] 
  
    # for counting the 
    # rows of the ZigZag
    row = 0
    for i in range(l):
          
        # put characters in the matrix
        a[row][i] = s[i]; 
      
        # You have reached the bottom
        if row == n - 1:
            down = False    
        elif row == 0:
            down = True
        if down == True:
            row = row + 1
        else:
            row = row - 1
  
    # Print the Zig-Zag String
    for i in range(n):
        for j in range(l):
            print(str(a[i][j]), end = " ")
        print()
      
# Driver Code
s = "GeeksforGeeks"
n = 3
fun(s, n)
  
# This code is contributed 
# by ChitraNayal


C#




// C# program to print wave 
// pattern of a given string
using System;
  
class GFG 
{
  
    // Function that takes 
    // string and zigzag offset
    static void fun(string s, int n) 
    {
          
    // if offset is 1
    if (n == 1)             
    {
        // simply print the 
        // string and return
        Console.Write(s);             
        return;
    }
  
    // Get length of the string
    int len = s.Length; 
      
    // Create a 2d character array
    char[,] a = new char[len,len];
    char[] c = s.ToCharArray();
      
    // for counting the
    // rows of the ZigZag
    int row = 0;         
    bool down = true;
      
    for (int i = 0; i < len; i++)
    {
        // put characters 
        // in the matrix
        a[row, i] = c[i]; 
          
        // You have reached the bottom
        if (row == n - 1)
            down = false;     
        else if (row == 0)
            down = true
              
        if(down)
            row++;
        else
            row--;
    }
      
    // Print the Zig-Zag String
    for (int i = 0; i < n; i++)
    
        for (int j = 0; j < len; j++)
        {
            Console.Write(a[i, j] + " ");
        }
        Console.Write("\n");
    }
    }
      
    // Driver Code
    public static void Main() 
    {
        string s = "GeeksforGeeks";
        int n = 3;
        fun(s, n);
    }
}
  
// This code is contributed
// by ChitraNayal


PHP




<?php
// php program to print wave 
// pattern of a given string
  
// Function that takes string
// and zigzag offset
function fun($s, $n
{
      
    // if offset is 1
    if ($n == 1)     
    {
          
        // simply print the 
        // string and return
        echo $s;         
        return;
    }
  
    // Get length of the string
    $len = strlen($s); 
      
    // for counting the rows 
    // of the ZigZag
    $row = 0;     
    $down;
      
    for ($i = 0; $i < $len; $i++)
        for ($j = 0; $j < $len; $j++)
        $a[$i][$j]=" ";
      
    for ($i = 0; $i < $len; $i++)
    {
          
        // put characters
        // in the matrix
        $a[$row][$i] = $s[$i]; 
          
        // You have reached 
        // the bottom
        if ($row == $n - 1)
            $down = false; 
        else if ($row == 0)
            $down = true;
              
        ($down)? ($row++): ($row--);
    }
      
    // Print the Zig-Zag String
    for ($i = 0; $i < $n; $i++)
    
        for ($j = 0; $j < $len; $j++)
        {
            echo $a[$i][$j]." ";
        }
        echo "\n";
    }
}
  
    // Driver code
    $s = "GeeksforGeeks";
    $n = 3;
    fun($s, $n);
  
//This code is contributed by mits 
?>


Javascript




<script>
// Javascript program to print wave  
// pattern of a given string
      
    // Function that takes 
    // string and zigzag offset
    function fun(s,n)
    {
        // if offset is 1
    if (n == 1)             
    {
        // simply print the
        // string and return
        document.write(s);             
        return;
    }
    
    // Get length of the string
    let len = s.length; 
        
    // Create a 2d character array
    let a = new Array(len);
    for(let i=0;i<len;i++)
    {
        a[i]=new Array(len);
        for(let j=0;j<len;j++)
        {
            a[i][j]=' ';
        }
    }
    let c = s.split("");
        
    // for counting the 
    // rows of the ZigZag
    let row = 0;         
    let down = true;
        
    for (let i = 0; i < len; i++)
    {
        // put characters in
        // the matrix
        a[row][i] = s[i]; 
            
        // You have reached
        // the bottom
        if (row == n - 1)
            down = false;     
        else if (row == 0)
            down = true
                
        if(down)
            row++;
        else
            row--;
    }
        
    // Print the Zig-Zag String
    for (let i = 0; i < n; i++)
    
        for (let j = 0; j < len; j++)
        {
            document.write(a[i][j] + " ");
        }
        document.write("<br>");
    }
    }
      
    // Driver Code
      
    let s = "GeeksforGeeks";
    let n = 3;
    fun(s, n);
    // This code is contributed by avanitrachhadiya2155
</script>


Output:  

G       s       G       s 
  e   k   f   r   e   k   
    e       o       e     

Time complexity: O(n*len) where len is length of string and given input n

Auxiliary space: O(len*len) for 2-d array a
 



Last Updated : 16 Feb, 2023
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads