Convert a String to an Integer using Recursion
Given a string str representing a string, the task is to convert the given string into an integer.
Examples:
Input: str = “1235”
Output: 1235
Explanation: “1235” is converted to the integer 1235 by extracting and combining its digits.
Input: str = “0145”
Output: 145
Approach
To recursively converts a numeric string into an integer. It starts from the first character, extracts its numeric value, and multiplies it by the appropriate power of 10 based on its position. The function then recursively processes the remaining characters until the entire string is converted. A helper function is used to manage the recursive calls, ensuring an efficient conversion process.
#include <bits/stdc++.h>
using namespace std;
int stringToIntHelper(const string &str, int index) {
// Base case: when index reaches the end of the string
if (index == str.length())
return 0;
// Convert current character to digit
int digit = str[index] - '0';
// Recursively compute the rest of the number
return digit * pow(10, str.length() - index - 1) + stringToIntHelper(str, index + 1);
}
// Wrapper function
int stringToInt(string str) {
return stringToIntHelper(str, 0);
}
// Driver code
int main() {
string str = "1235";
cout << stringToInt(str) << endl;
return 0;
}
class GfG {
static int stringToIntHelper(String str, int index) {
// Base case: when index reaches the end of the string
if (index == str.length())
return 0;
// Convert current character to digit
int digit = str.charAt(index) - '0';
// Recursively compute the rest of the number
return digit * (int)Math.pow(10, str.length() - index - 1) + stringToIntHelper(str, index + 1);
}
// Wrapper function
static int stringToInt(String str) {
return stringToIntHelper(str, 0);
}
// Driver code
public static void main(String[] args) {
String str = "1235";
System.out.println(stringToInt(str));
}
}
def stringToIntHelper(str, index):
if index == len(str):
return 0
# Convert current character to digit
digit = int(str[index])
# Recursively compute the rest of the number
return digit * (10 ** (len(str) - index - 1)) + stringToIntHelper(str, index + 1)
# Wrapper function
def stringToInt(str):
return stringToIntHelper(str, 0)
# Driver code
str_value = "1235"
print(stringToInt(str_value))
using System;
class GfG {
static int stringToIntHelper(string str, int index) {
// Base case: when index reaches the end of the string
if (index == str.Length)
return 0;
// Convert current character to digit
int digit = str[index] - '0';
// Recursively compute the rest of the number
return digit * (int)Math.Pow(10, str.Length - index - 1) + stringToIntHelper(str, index + 1);
}
// Wrapper function
static int stringToInt(string str) {
return stringToIntHelper(str, 0);
}
// Driver code
static void Main() {
string str = "1235";
Console.WriteLine(stringToInt(str));
}
}
function stringToIntHelper(str, index) {
if (index === str.length)
return 0;
// Convert current character to digit
let digit = str.charCodeAt(index) - '0'.charCodeAt(0);
// Recursively compute the rest of the number
return digit * Math.pow(10, str.length - index - 1) + stringToIntHelper(str, index + 1);
}
// Wrapper function
function stringToInt(str) {
return stringToIntHelper(str, 0);
}
// Driver code
let str = "1235";
console.log(stringToInt(str));
Output
1235
Time Complexity: O(n), where n is the length of the string.
Auxiliary Space: O(n), due to recursive function calls stored in the call stack.