Leetcode: String to Integer (atoi)
Normally when parsing a String into an int, people expect it to be a static method

Having to create a class to do the computation is a bit bulky, and then you need to worry about synchronization (what happens if this class is shared across multiple threads?)

boolean isOverflow(int prev, int curr) {
    // prev = value at last iteration
    // curr = value after current iteration
    if (curr/10 == prev) {
        return false;
    }
    return true;
}


This method is already a great candidate to become static, it only relies on its two inputs to figure out if an overflow happened

boolean isNegative = false;
int i = 0; // string iterator position

void checkSign(String str) //uses i and isNegative

int signSolution(int solution) //uses isNegative


These are slightly more tricky, int signSolution(int solution) can just take another parameter: static int signSolution(int solution, boolean isNegative)

void checkSign(String str) would need to be included as part of the myAtoI method or be rewritten a bit

If we treat + as whitespace, then it would only need to worry about handling -

static boolean checkSign(String str, int i)
{
    return str.charAt(i) == '-';
}


And calls to checkSign(str); would instead be if(checkSign(str)) i++;



Be consistent.  You're mixing for and while loops of similar structure

while (i &lt; str.length() &amp;&amp; str.charAt(i) == ' ')
    i++;
[...]
for (; i &lt; str.length(); i++) {
    [...]
}


They can either both be for loops, or both be while loops, but mixing is unexpected

for(; i &lt; str.length() &amp;&amp; str.charAt(i) == ' '; i++);
[...]
for(; i &lt; str.length(); i++)
{
    [...]
}


vs

while(i &lt; str.length() &amp;&amp; str.charAt(i) == ' ')
    i++;
[...]
while(i &lt; str.length())
{
    [...]
    i++;
}




Checking "whitespace" currently only checks spaces

Instead of using str.charAt(i) == ' ', you can offload complicated functionality to another method (and be easier to change later)

static boolean isWhiteSpace(char c)
{
    return c == ' ';
}


Then if you'd like to include all whitespace (and + and mentioned above)

static boolean isWhiteSpace(char c)
{
    return Character.isWhitespace(c) || (c == '+');
}




Instances of if(bool) return true; else return false; are the same as just return bool;

if (curr/10 == prev) {
        return false;
}
return true;


Can be simplified to just

return curr / 10 != prev;




OptionalA:

Another way to check for overflow is to store the output as a long, and check if it overflows

public static int myAtoI(String str)
{
    long solution = 0;
    [...]
}

private static isOverflow(long num)
{
    return num == (int)num;
}




OptionalB:

Instead of adding the values and then flipping the result, you could subtract values if it's a negative number