Implement Atoi

Hello coders I'm Dhanraj. In this post, I will show you how to implement our own atoi function in Java. This function can convert a string to an integer, even if the string contains a negative sign. It also returns -1 if the string has any non-digit characters. Let's take a look at the following simple code and follow me for more interesting content.

Your task is to implement the function atoi. The function takes a string(str) as argument and converts it to an integer and returns it.

Note: You are not allowed to use inbuilt function.

Example 1:

Input:
str = 123
Output: 123

Example 2:

Input:
str = 21a
Output: -1
Explanation: Output is -1 as all
characters are not digit only.

Your Task:
Complete the function atoi() which takes a string as input parameter and returns integer value of it. if the input string is not a numerical string then returns -1.
Note: Numerical strings are the string where either every character is in between 0-9 or where the first character is '-' and the rest all characters are in between 0-9.

Expected Time Complexity: O(|S|), |S| = length of string str.
Expected Auxiliary Space: O(1)

Constraints:
1 ≤ length of S ≤ 10

Note:The Input/Ouput format and Example given are used for system's internal purpose, and should be used by a user for Expected Output only. As it is a function problem, hence a user should not read any input from stdin/console. The task is to complete the function specified, and not to write the full code.

Solution:

class Solution
{
    int atoi(String str1) {

        int res = 0;

        char str[] = str1.toCharArray();
        int sign = 1;
        int i = 0;

        if (str[0] == '-') {
            sign = -1;
            i++;
        }
        for (; i < str.length; ++i)
        {
            if(0<=str[i]-'0' && str[i]-'0'<=9 )
                res = res * 10 + str[i] - '0';
            else
            {
                return -1;
            }
        }

        return sign * res;
    }
}

Output:

For Input: 
123
Your Output: 
123
Expected Output: 
123

Did you find this article valuable?

Support DHANRAJ NIKAM by becoming a sponsor. Any amount is appreciated!