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