Print a String in wave pattern
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++
#include<bits/stdc++.h>
using namespace std;
void fun(string s, int n)
{
if (n==1)
{
cout << s;
return ;
}
int len = s.length();
char a[len][len] = { };
int row = 0;
bool down;
for ( int i=0; i<len; i++)
{
a[row][i] = s[i];
if (row==n-1)
down = false ;
else if (row==0)
down = true ;
(down)?(row++):(row--);
}
for ( int i=0; i<n; i++)
{
for ( int j=0; j<len; j++)
{
cout<<a[i][j]<< " " ;
}
cout<<endl;
}
}
int main()
{
string s = "GeeksforGeeks" ;
int n = 3;
fun(s, n);
}
|
Java
import java.lang.*;
import java.util.*;
class GFG
{
static void fun(String s, int n)
{
if (n == 1 )
{
System.out.print(s);
return ;
}
int len = s.length();
char [][]a = new char [len][len];
char []c = s.toCharArray();
int row = 0 ;
boolean down = true ;
for ( int i = 0 ; i < len; i++)
{
a[row][i] = c[i];
if (row == n - 1 )
down = false ;
else if (row == 0 )
down = true ;
if (down)
row++;
else
row--;
}
for ( int i = 0 ; i < n; i++)
{
for ( int j = 0 ; j < len; j++)
{
System.out.print(a[i][j] + " " );
}
System.out.println();
}
}
public static void main(String[] args)
{
String s = "GeeksforGeeks" ;
int n = 3 ;
fun(s, n);
}
}
|
Python 3
def fun(s, n):
if (n = = 1 ):
print (s)
return
l = len (s)
a = [[ " " for x in range (l)] for y in range (l)]
row = 0
for i in range (l):
a[row][i] = s[i];
if row = = n - 1 :
down = False
elif row = = 0 :
down = True
if down = = True :
row = row + 1
else :
row = row - 1
for i in range (n):
for j in range (l):
print ( str (a[i][j]), end = " " )
print ()
s = "GeeksforGeeks"
n = 3
fun(s, n)
|
C#
using System;
class GFG
{
static void fun( string s, int n)
{
if (n == 1)
{
Console.Write(s);
return ;
}
int len = s.Length;
char [,] a = new char [len,len];
char [] c = s.ToCharArray();
int row = 0;
bool down = true ;
for ( int i = 0; i < len; i++)
{
a[row, i] = c[i];
if (row == n - 1)
down = false ;
else if (row == 0)
down = true ;
if (down)
row++;
else
row--;
}
for ( int i = 0; i < n; i++)
{
for ( int j = 0; j < len; j++)
{
Console.Write(a[i, j] + " " );
}
Console.Write( "\n" );
}
}
public static void Main()
{
string s = "GeeksforGeeks" ;
int n = 3;
fun(s, n);
}
}
|
PHP
<?php
function fun( $s , $n )
{
if ( $n == 1)
{
echo $s ;
return ;
}
$len = strlen ( $s );
$row = 0;
$down ;
for ( $i = 0; $i < $len ; $i ++)
for ( $j = 0; $j < $len ; $j ++)
$a [ $i ][ $j ]= " " ;
for ( $i = 0; $i < $len ; $i ++)
{
$a [ $row ][ $i ] = $s [ $i ];
if ( $row == $n - 1)
$down = false;
else if ( $row == 0)
$down = true;
( $down )? ( $row ++): ( $row --);
}
for ( $i = 0; $i < $n ; $i ++)
{
for ( $j = 0; $j < $len ; $j ++)
{
echo $a [ $i ][ $j ]. " " ;
}
echo "\n" ;
}
}
$s = "GeeksforGeeks" ;
$n = 3;
fun( $s , $n );
?>
|
Javascript
<script>
function fun(s,n)
{
if (n == 1)
{
document.write(s);
return ;
}
let len = s.length;
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( "" );
let row = 0;
let down = true ;
for (let i = 0; i < len; i++)
{
a[row][i] = s[i];
if (row == n - 1)
down = false ;
else if (row == 0)
down = true ;
if (down)
row++;
else
row--;
}
for (let i = 0; i < n; i++)
{
for (let j = 0; j < len; j++)
{
document.write(a[i][j] + " " );
}
document.write( "<br>" );
}
}
let s = "GeeksforGeeks" ;
let n = 3;
fun(s, n);
</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
Share your thoughts in the comments
Please Login to comment...