Given a string str, the task is to convert the given string into the number without using any inbuilt function.
Examples:
Input: str = “985632” Output: 985632 Explanation: Given input is in string form and returned output is in integer form. Input: str = “123” Output: 123 Explanation: Given input is in string form and returned output is in integer form.
Approach: The idea is to use the ASCII value of the digits from 0 to 9 start from 48 – 57. Therefore, to change the numeric character to an integer subtract 48 from the ASCII value of the character will give the corresponding digit for the given character.
Below is the implementation of the above approach:
// C program for the above approach #include <stdio.h> #include <string.h> // Function to convert string to // integer without using functions void convert( char s[])
{ // Initialize a variable
int num = 0;
int n = strlen (s);
// Iterate till length of the string
for ( int i = 0; i < n; i++)
// Subtract 48 from the current digit
num = num * 10 + (s[i] - 48);
// Print the answer
printf ( "%d" , num);
} // Driver Code int main()
{ // Given string of number
char s[] = "123" ;
// Function Call
convert(s);
return 0;
} |
// C++ program for the above approach #include <iostream> using namespace std;
// Function to convert string to // integer without using functions void convert(string s)
{ // Initialize a variable
int num = 0;
int n = s.length();
// Iterate till length of the string
for ( int i = 0; i < n; i++)
// Subtract 48 from the current digit
num = num * 10 + ( int (s[i]) - 48);
// Print the answer
cout << num;
} // Driver Code int main()
{ // Given string of number
char s[] = "123" ;
// Function Call
convert(s);
return 0;
} |
// Java program for the above approach class GFG{
// Function to convert string to // integer without using functions public static void convert(String s)
{ // Initialize a variable
int num = 0 ;
int n = s.length();
// Iterate till length of the string
for ( int i = 0 ; i < n; i++)
// Subtract 48 from the current digit
num = num * 10 + (( int )s.charAt(i) - 48 );
// Print the answer
System.out.print(num);
} // Driver code public static void main(String[] args)
{ // Given string of number
String s = "123" ;
// Function Call
convert(s);
} } // This code is contributed by divyeshrabadiya07 |
# Python3 program for the above approach # Function to convert string to # integer without using functions def convert(s):
# Initialize a variable
num = 0
n = len (s)
# Iterate till length of the string
for i in s:
# Subtract 48 from the current digit
num = num * 10 + ( ord (i) - 48 )
# Print the answer
print (num)
# Driver code if __name__ = = '__main__' :
# Given string of number
s = "123"
# Function Call
convert(s)
# This code is contributed by Shivam Singh |
// C# program for the above approach using System;
class GFG{
// Function to convert string to // integer without using functions public static void convert( string s)
{ // Initialize a variable
int num = 0;
int n = s.Length;
// Iterate till length of the string
for ( int i = 0; i < n; i++)
// Subtract 48 from the current digit
num = num * 10 + (( int )s[i] - 48);
// Print the answer
Console.Write(num);
} // Driver code public static void Main( string [] args)
{ // Given string of number
string s = "123" ;
// Function call
convert(s);
} } // This code is contributed by rock_cool |
// Function to convert string to // integer without using functions function convert(s) {
// Initialize a variable
let num = 0;
let n = s.length;
// Iterate till length of the string
for (let i = 0; i < n; i++) {
// Subtract 48 from the current digit
num = num * 10 + (s.charCodeAt(i) - 48);
}
// Print the answer
console.log(num);
} // Driver code let s = "123" ;
// Function Call convert(s); // This code is contributed by Prince Kumar |
123
Time Complexity: O(N), where N is the length of the given string.
Auxiliary Space: O(1)
Approach: In the above approach we still used built-in functions len and chr. Below is solution with using any function and not using indices as well.
#include <iostream> #include <unordered_map> using namespace std;
int strToInt(string s) {
unordered_map< char , int > chrToInt = {{ '1' , 1}, { '2' , 2}, { '3' , 3}, { '4' , 4}, { '5' , 5},
{ '6' , 6}, { '7' , 7}, { '8' , 8}, { '9' , 9}, { '0' , 0}};
int i = 0;
int minus = 0;
int ifFloat = 0;
string res = "" ;
for ( char ch : s) {
if (ch == '-' && i == 0) {
minus = 1;
} else if (ch == '+' && i == 0) {
i += 1;
} else if (ch == '.' ) {
if (ifFloat == 1) {
throw "Value Error" ;
}
ifFloat = 1;
} else if (chrToInt.count(ch)) {
if (ifFloat == 0) {
res += ch;
} else {
throw "Value Error" ;
}
} else {
throw "Value Error" ;
}
i += 1;
}
int num = 0;
for ( char c : res) {
num = num * 10 + chrToInt;
}
if (minus == 1) {
num *= -1;
}
return num;
} int main() {
string inputArr[] = { "34.4.5" , "-inf" , "233.a" , "# 567" , "000234" , ".023" , "-23.78" ,
"36625276396422484242000000000000000" , "a1a1a1" , "10.00001" , "" , "-.23" , "583.40000" ,
"0000" , "10e2 " , "2×4" };
string input2[] = { "+466" , "+0.23" , "101001" , "0023" , "4001.23" , "40.834" , "aaa" , "abc234" , "23.543abc" , "–0.0" ,
"-0.0" , "0.0" , "222.2" , "-+1323" , "+-23" };
int len1 = sizeof (inputArr) / sizeof (inputArr[0]);
int len2 = sizeof (input2) / sizeof (input2[0]);
for ( int i = 0; i < len1; i++) {
try {
cout << strToInt(inputArr[i]) << endl;
} catch ( const char * msg) {
cout << msg << endl;
}
}
for ( int i = 0; i < len2; i++) {
try {
cout << strToInt(input2[i]) << endl;
} catch ( const char * msg) {
cout << msg << endl;
}
}
return 0;
} |
import java.util.HashMap;
public class StrToInt
{ // Function to convert string to integer without using functions
public static int strToInt(String s) throws Exception {
HashMap<Character, Integer> chrToInt = new HashMap<Character, Integer>();
chrToInt.put( '1' , 1 );
chrToInt.put( '2' , 2 );
chrToInt.put( '3' , 3 );
chrToInt.put( '4' , 4 );
chrToInt.put( '5' , 5 );
chrToInt.put( '6' , 6 );
chrToInt.put( '7' , 7 );
chrToInt.put( '8' , 8 );
chrToInt.put( '9' , 9 );
chrToInt.put( '0' , 0 );
int i = 0 ;
int minus = 0 ;
int ifFloat = 0 ;
String res = "" ;
for ( char ch : s.toCharArray()) {
if (ch == '-' && i == 0 ) {
minus = 1 ;
} else if (ch == '+' && i == 0 ) {
i += 1 ;
} else if (ch == '.' ) {
if (ifFloat == 1 ) {
throw new Exception( "Value Error" );
}
ifFloat = 1 ;
} else if (chrToInt.containsKey(ch)) {
if (ifFloat == 0 ) {
res += ch;
} else {
throw new Exception( "Value Error" );
}
} else {
throw new Exception( "Value Error" );
}
i += 1 ;
}
int num = 0 ;
for ( char c : res.toCharArray()) {
num = num * 10 + chrToInt.get(c);
}
if (minus == 1 ) {
num *= - 1 ;
}
return num;
}
// Driver code
public static void main(String[] args) {
String[] inputArr = { "34.4.5" , "-inf" , "233.a" , "# 567" , "000234" , ".023" , "-23.78" ,
"36625276396422484242000000000000000" , "a1a1a1" , "10.00001" , "" , "-.23" , "583.40000" ,
"0000" , "10e2 " , "2×4" };
String[] input2 = { "+466" , "+0.23" , "101001" , "0023" , "4001.23" , "40.834" , "aaa" , "abc234" , "23.543abc" , "–0.0" ,
"-0.0" , "0.0" , "222.2" , "-+1323" , "+-23" };
for (String s : inputArr) {
try {
System.out.println(strToInt(s));
} catch (Exception e) {
System.out.println( "Value Error" );
}
}
}
} |
# Python3 program for the above approach # Function to convert string to # integer without using functions def strToInt(s):
chrToInt = {‘ 1 ?: 1 , ’ 2 ?: 2 , ’ 3 ?: 3 , ’ 4 ?: 4 , ’ 5 ?: 5 , ’ 6 ?: 6 , ’ 7 ?: 7 , ’ 8 ?: 8 , ’ 9 ?: 9 , ’ 0 ?: 0 }
i = 0
minus = 0
ifFloat = 0
res = “”
for char in s:
if char = = ’ - ‘ and i = = 0 :
minus = 1
i + = 1
elif char = = ’ + ’ and i = = 0 :
i + = 1
elif char = = ’.’:
if ifFloat:
raise ValueError
ifFloat = 1
i + = 1
elif char in chrToInt:
if not ifFloat:
res + = char
i + = 1
else :
raise ValueError
num = 0
for c in res:
num = num * 10 + chrToInt
if minus = = 1 :
num * = - 1
return num
# Driver code if __name__ = = ‘__main__’:
inputArr = [“ 34.4 . 5 ”, “ - inf”, ” 233.a ”, ” # 567?,”000234?,”.023?,”-23.78?,
“ 36625276396422484242000000000000000 ”, ”a1a1a1?, ” 10.00001 ?, ””, ” - . 23 ?, ” 583.40000 ?,
“ 0000 ”, ” 10e2 “, ” 2 × 4 ”]
input2 = [“ + 466 ?, ” + 0.23 ?, ” 101001 ?, ” 0023 ?, ” 4001.23 ?, ” 40.834 ?, ”aaa”, ”abc234?, ” 23.543abc ”, ”– 0.0 ?,
“ - 0.0 ?, ” 0.0 ?, ” 222.2 ?, ” - + 1323 ?, ” + - 23 ?]
for s in inputArr:
try :
print (strToInt(s))
except ValueError:
print (“Value Error”)
|
using System;
using System.Collections.Generic;
class StrToIntClass
{ // Function to convert string to integer without using functions static int StrToInt( string s)
{ Dictionary< char , int > chrToInt = new Dictionary< char , int >(){
{ '1' , 1},
{ '2' , 2},
{ '3' , 3},
{ '4' , 4},
{ '5' , 5},
{ '6' , 6},
{ '7' , 7},
{ '8' , 8},
{ '9' , 9},
{ '0' , 0}
}; int i = 0;
int minus = 0;
int ifFloat = 0;
string res = "" ;
foreach ( char ch in s)
{
if (ch == '-' && i == 0)
{
minus = 1;
}
else if (ch == '+' && i == 0)
{
i += 1;
}
else if (ch == '.' )
{
if (ifFloat == 1)
{
throw new Exception( "Value Error" );
}
ifFloat = 1;
}
else if (chrToInt.ContainsKey(ch))
{
if (ifFloat == 0)
{
res += ch;
}
else
{
throw new Exception( "Value Error" );
}
}
else
{
throw new Exception( "Value Error" );
}
i += 1;
}
int num = 0;
foreach ( char c in res)
{
num = num * 10 + chrToInt;
}
if (minus == 1)
{
num *= -1;
}
return num;
} // Driver code static void Main( string [] args)
{ string [] inputArr = { "34.4.5" , "-inf" , "233.a" , "# 567" , "000234" , ".023" , "-23.78" ,
"36625276396422484242000000000000000" , "a1a1a1" , "10.00001" , "" , "-.23" , "583.40000" ,
"0000" , "10e2 " , "2×4" };
string [] input2 = { "+466" , "+0.23" , "101001" , "0023" , "4001.23" , "40.834" , "aaa" , "abc234" , "23.543abc" , "–0.0" ,
"-0.0" , "0.0" , "222.2" , "-+1323" , "+-23" };
foreach ( string s in inputArr)
{
try
{
Console.WriteLine(StrToInt(s));
}
catch (Exception e)
{
Console.WriteLine( "Value Error" );
}
}
} } |
// Function to convert string to integer without using functions function strToInt(s) {
const chrToInt = { '1' : 1, '2' : 2, '3' : 3, '4' : 4, '5' : 5,
'6' : 6, '7' : 7, '8' : 8, '9' : 9, '0' : 0 };
let i = 0;
let minus = 0;
let ifFloat = 0;
let res = '' ;
for (let ch of s) {
if (ch === '-' && i === 0) {
minus = 1;
} else if (ch === '+' && i === 0) {
i += 1;
} else if (ch === '.' ) {
if (ifFloat === 1) {
throw new Error( 'Value Error' );
}
ifFloat = 1;
} else if (chrToInt.hasOwnProperty(ch)) {
if (ifFloat === 0) {
res += ch;
} else {
throw new Error( 'Value Error' );
}
} else {
throw new Error( 'Value Error' );
}
i += 1;
}
let num = 0;
for (let c of res) {
num = num * 10 + chrToInt;
}
if (minus === 1) {
num *= -1;
}
return num;
} const inputArr = [ '34.4.5' , '-inf' , '233.a' , '# 567' , '000234' , '.023' , '-23.78' ,
'36625276396422484242000000000000000' , 'a1a1a1' , '10.00001' , '' , '-.23' , '583.40000' ,
'0000' , '10e2 ' , '2×4' ];
const input2 = [ '+466' , '+0.23' , '101001' , '0023' , '4001.23' , '40.834' , 'aaa' , 'abc234' , '23.543abc' , '–0.0' ,
'-0.0' , '0.0' , '222.2' , '-+1323' , '+-23' ];
for (let i = 0; i < inputArr.length; i++) {
try {
console.log(strToInt(inputArr[i]));
} catch (err) {
console.log(err.message);
}
} for (let i = 0; i < input2.length; i++) {
try {
console.log(strToInt(input2[i]));
} catch (err) {
console.log(err.message);
}
} |
Value Error Value Error Value Error Value Error 234 Value Error Value Error -1535836160 Value Error Value Error 0 Value Error Value Error 0 Value Error Value Error