# 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:**

```plaintext
Input:
str = 123
Output: 123
```

**Example 2:**

```plaintext
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:**

```java
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:**

```plaintext
For Input: 
123
Your Output: 
123
Expected Output: 
123
```
