Open In App

Function to copy string (Iterative and Recursive)

Last Updated : 07 Dec, 2022
Suggest changes
Share
74 Likes
Like
Report

Given two strings, copy one string to another using recursion. We basically need to write our own recursive version of strcpy in C/C++

Examples: 

Input : s1 = "hello" s2 = "geeksforgeeks" Output : s2 = "hello" Input : s1 = "geeksforgeeks" s2 = "" Output : s2 = "geeksforgeeks"

Iterative: Copy every character from s1 to s2 starting from index = 0 and in each call increase the index by 1 until s1 doesn't reach to end; 

Implementation:

C++
// Iterative CPP Program to copy one String  // to another. #include <bits/stdc++.h> using namespace std; // Function to copy one string to other // assuming that other string has enough // space. void myCopy(char s1[], char s2[]) {  int i = 0;  for (i=0; s1[i] != '\0'; i++)  s2[i] = s1[i];  s2[i] = '\0'; } // Driver function int main() {  char s1[100] = "GEEKSFORGEEKS";  char s2[100] = "";  myCopy(s1, s2);  cout << s2;  return 0; } 
Java
// Iterative Java Program to copy one String  // to another. class GFG {   // Function to copy one string to other // assuming that other string has enough // space. static void myCopy(char s1[], char s2[]) {  int i = 0;  for (i = 0; i < s1.length; i++)  s2[i] = s1[i]; } // Driver code public static void main(String[] args)  {  char s1[] = "GEEKSFORGEEKS".toCharArray();  char s2[] = new char[s1.length];  myCopy(s1, s2);  System.out.println(String.valueOf(s2)); } } // This code contributed by Rajput-Ji 
Python3
## Iterative Python Program to copy one String  # to another. # Function to copy one string to other def myCopy(s1,s2): # traversing the string s1 from start to end for i in range(len(s1)): # copying value one by one s2[i]=s1[i] return "".join(s2) #Driver code s1=list("GEEKSFORGEEKS") s2=[""]*len(s1) print(myCopy(s1,s2)) '''Code is contributed by RAJAT KUMAR (rajatkumargla19)''' 
C#
// Iterative C# Program to copy one String  // to another. using System;  class GFG {   // Function to copy one string to other // assuming that other string has enough // space. static void myCopy(char []s1, char []s2) {  int i = 0;  for (i = 0; i < s1.Length; i++)  s2[i] = s1[i]; } // Driver code public static void Main(String[] args)  {  char []s1 = "GEEKSFORGEEKS".ToCharArray();  char []s2 = new char[s1.Length];  myCopy(s1, s2);  Console.WriteLine(String.Join("", s2)); } } // This code is contributed by 29AjayKumar 
JavaScript
<script> // Iterative Javascript Program to copy one String  // to another.   // Function to copy one string to other // assuming that other string has enough // space. function myCopy(s1, s2) {  let i = 0;  for (i = 0; i < s1.length; i++)  s2[i] = s1[i]; } // Driver code  // Driver Code let s1 = "GEEKSFORGEEKS"; let s2 = []; let index = 0; myCopy(s1, s2, index); document.write(s2.join("")); // This code contributed by shivanisinghss2110 </script> 

Output
GEEKSFORGEEKS

Time Complexity: O(m), Here m is the length of string s1.
Auxiliary Space: O(1), As constant extra space is used.

Recursive: Copy every character from s1 to s2 starting from index = 0 and in each call increase the index by 1 until s1 doesn't reach to end; 

Implementation:

C++
// CPP Program to copy one String to  // another using Recursion #include <bits/stdc++.h> using namespace std; // Function to copy one string in to other // using recursion void myCopy(char s1[], char s2[], int index = 0) {  // copying each character from s1 to s2  s2[index] = s1[index];   // if string reach to end then stop   if (s1[index] == '\0')   return;  // increase character index by one  myCopy(s1, s2, index + 1);  } // Driver function int main() {  char s1[100] = "GEEKSFORGEEKS";  char s2[100] = "";  myCopy(s1, s2);  cout << s2;  return 0; } 
Java
// Java Program to copy one String to  // another using Recursion  class GFG  {    // Function to copy one string in to other   // using recursion   static void myCopy(char s1[],   char s2[], int index)   {  // copying each character from s1 to s2   s2[index] = s1[index];  // if string reach to end then stop   if (index == s1.length - 1)  {  return;  }  // increase character index by one   myCopy(s1, s2, index + 1);  }  // Driver Code   public static void main(String[] args)   {  char s1[] = "GEEKSFORGEEKS".toCharArray();  char s2[] = new char[s1.length];  int index = 0;  myCopy(s1, s2, index);  System.out.println(String.valueOf(s2));  } } // This code is contributed by PrinciRaj1992  
Python3
# recursive Python Program to copy one String # to another. # Function to copy one string to other def copy_str(x, y): if len(y) == 0: return x else: c = copy_str(x, (y)[1:-1]) return c x = input("hello") y = input("no") print(copy_str(x, y)) # This code contributed by deeksha20049@iiid.ac.in 
C#
// C# Program to copy one String to  // another using Recursion  using System; class GFG  {    // Function to copy one string in to other   // using recursion   static void myCopy(char []s1,   char []s2, int index)   {  // copying each character from s1 to s2   s2[index] = s1[index];  // if string reach to end then stop   if (index == s1.Length - 1)  {  return;  }  // increase character index by one   myCopy(s1, s2, index + 1);  }  // Driver Code   public static void Main(String[] args)   {  char []s1 = "GEEKSFORGEEKS".ToCharArray();  char []s2 = new char[s1.Length];  int index = 0;  myCopy(s1, s2, index);  Console.WriteLine(String.Join("", s2));  } } // This code is contributed by Princi Singh 
JavaScript
<script> // Javascript program to copy one String to  // another using Recursion  // Function to copy one string in to other // using recursion function myCopy(s1, s2, index) {    // Copying each character from s1 to s2  s2[index] = s1[index];  // If string reach to end then stop  if (index == s1.length - 1)   {  return;  }    // Increase character index by one  myCopy(s1, s2, index + 1); } // Driver Code var s1 = "GEEKSFORGEEKS"; var s2 = []; var index = 0; myCopy(s1, s2, index); document.write(s2.join("")); // This code is contributed by gauravrajput1  </script> 

Output: 
GEEKSFORGEEKS

 

Time Complexity: O(m), Here m is the length of string s1.
Auxiliary Space: O(m), due to recursive call stack


Article Tags :

Explore