Would the runtime of Integer.parseInt(String i) and Integer.toString(int i) both be O(n)?
Advertisement
Answer
Yes both of them Integer.parseInt("1000")
and Integer.toString(1000)
have time complexity O(N)
The internal code of
Integer.parseInt("1000")
reads the the strings char by char and covert to decimal in while loopThe internal code of
Integer.toString(1000)
reads the integers and convert every digit to char and stores inbyte[] buf
then creates new string from the byte array
Here is the code of
Integer.parseInt()
:int i = 0, len = s.length(); int limit = -Integer.MAX_VALUE; // some checks int multmin = limit / radix; int result = 0; while (i < len) { // Accumulating negatively avoids surprises near MAX_VALUE int digit = Character.digit(s.charAt(i++), radix); if (digit < 0 || result < multmin) { throw NumberFormatException.forInputString(s, radix); } result *= radix; if (result < limit + digit) { throw NumberFormatException.forInputString(s, radix); } result -= digit; } return negative ? result : -result;