📖
Leetcode
  • Introduction
  • 1.Two Sum
  • 2.Add Two Numbers
  • 3.Longest Substring Without Repeating Characters
  • 4.Median of Two Sorted Arrays
  • 5.Longest Palindromic Substring
  • 6.ZigZag Conversion
  • 7. Reverse Integer
  • 8. String to Integer (atoi)
  • 9. Palindrome Number
  • 10. Regular Expression Matching
  • 11. Container With Most Water
  • 12. Integer to Roman
  • 13. Roman to Integer
  • 14. Longest Common Prefix
  • 15. 3Sum
  • 16. 3Sum Closest
  • 17. Letter Combinations of a Phone Number
  • 18. 4Sum
  • 19. Remove Nth Node From End of List
  • 20. Valid Parentheses
  • 21. Merge Two Sorted Lists
  • 22. Generate Parentheses
  • 23. Merge k Sorted Lists
  • 24. Swap Nodes in Pairs
  • 25. Reverse Nodes in k-Group
  • 26. Remove Duplicates from Sorted Array
  • 27. Remove Element
  • 28. Implement strStr()
  • 29. Divide Two Integers
  • 30. Substring with Concatenation of All Words
  • 31. Next Permutation
  • 32. Longest Valid Parentheses
  • 33. Search in Rotated Sorted Array
  • 34. Search for a Range
  • 35. Search Insert Position
  • 36. Valid Sudoku
  • 37. Sudoku Solver
  • 38. Count and Say
  • 39. Combination Sum
  • 40. Combination Sum II
  • 41. First Missing Positive
  • 42. Trapping Rain Water
  • 43. Multiply Strings
  • 44. Wildcard Matching
  • 45. Jump Game II
  • 46. Permutations
  • 47. Permutations II
  • 48. Rotate Image
  • 49. Group Anagrams
  • 50. Pow(x, n)
  • 51. N-Queens
  • 52. N-Queens II
  • 53. Maximum Subarray
  • 54. Spiral Matrix
  • 55. Jump Game
  • 56. Merge Intervals
  • 57. Insert Interval
  • 58. Length of Last Word
  • 59. Spiral Matrix II
  • 60. Permutation Sequence
  • 61. Rotate List
  • 62. Unique Paths
  • 63. Unique Paths II
  • 64. Minimum Path Sum
  • 65. Valid Number
  • 66. Plus One
  • 67. Add Binary
  • 68. Text Justification
  • 69. Sqrt(x)
  • 70. Climbing Stairs
  • 71. Simplify Path
  • 72. Edit Distance
  • 73. Set Matrix Zeroes
  • 74. Search a 2D Matrix
  • 75. Sort Colors
  • 76. Minimum Window Substring
  • 77. Combinations
  • 78. Subsets
  • 79. Word Search
  • 80. Remove Duplicates from Sorted Array II
  • 81. Search in Rotated Sorted Array II
  • 82. Remove Duplicates from Sorted List II
  • 83. Remove Duplicates from Sorted List
  • 84. Largest Rectangle in Histogram
  • 85. Maximal Rectangle
  • 86. Partition List
  • 87. Scramble String
  • 88. Merge Sorted Array
  • 89. Gray Code
  • 90. Subsets II
  • 91. Decode Ways
  • 92. Reverse Linked List II
  • 93. Restore IP Addresses
  • 94. Binary Tree Inorder Traversal
  • 95. Unique Binary Search Trees II
  • 96. Unique Binary Search Trees
  • 97. Interleaving String
  • 98. Validate Binary Search Tree
  • 99. Recover Binary Search Tree
  • 100. Same Tree
  • 101. Symmetric Tree
  • 102. Binary Tree Level Order Traversal
  • 103. Binary Tree Zigzag Level Order Traversal
  • 104. Maximum Depth of Binary Tree
  • 105. Construct Binary Tree from Preorder and Inorder Traversal
  • 106. Construct Binary Tree from Inorder and Postorder Traversal
  • 107. Binary Tree Level Order Traversal II
  • 108. Convert Sorted Array to Binary Search Tree
  • 109. Convert Sorted List to Binary Search Tree
  • 110. Balanced Binary Tree
  • 111. Minimum Depth of Binary Tree
  • 112. Path Sum
  • 113. Path Sum II
  • 114. Flatten Binary Tree to Linked List
  • 115. Distinct Subsequences
  • 116. Populating Next Right Pointers in Each Node
  • 117. Populating Next Right Pointers in Each Node II
  • 118. Pascal's Triangle
  • 119. Pascal's Triangle II
  • 120. Triangle
  • 121. Best Time to Buy and Sell Stock
  • 122. Best Time to Buy and Sell Stock II
  • 123. Best Time to Buy and Sell Stock III
  • 124. Binary Tree Maximum Path Sum
  • 125. Valid Palindrome
  • 126. Word Ladder II
  • 127. Word Ladder
  • 128. Longest Consecutive Sequence
  • 129. Sum Root to Leaf Numbers
  • 130. Surrounded Regions
  • 131. Palindrome Partitioning
  • 132. Palindrome Partitioning II
  • 133. Clone Graph
  • 134. Gas Station
  • 135. Candy
  • 136. Single Number
  • 137. Single Number II
  • 138. Copy List with Random Pointer
  • 139. Word Break
  • 140. Word Break II
  • 141. Linked List Cycle
  • 142. Linked List Cycle II
  • 143. Reorder List
  • 144. Binary Tree Preorder Traversal
  • 145. Binary Tree Postorder Traversal
  • 146. LRU Cache
  • 147. Insertion Sort List
  • 148. Sort List
  • 149. Max Points on a Line
  • 150. Evaluate Reverse Polish Notation
  • 151. Reverse Words in a String
  • 152. Maximum Product Subarray
  • 153. Find Minimum in Rotated Sorted Array
  • 154. Find Minimum in Rotated Sorted Array II
  • 155. Min Stack
  • 156. Binary Tree Upside Down
  • 157. Read N Characters Given Read4
  • 158. Read N Characters Given Read4 II - Call multiple times
  • 159. Longest Substring with At Most Two Distinct Characters
  • 160. Intersection of Two Linked Lists
  • 161. One Edit Distance
  • 162. Find Peak Element
  • 163. Missing Ranges
  • 164. Maximum Gap
  • 165. Compare Version Numbers
  • 166. Fraction to Recurring Decimal
  • 167. Two Sum II - Input array is sorted
  • 168. Excel Sheet Column Title
  • 169. Majority Element
  • 170. Two Sum III - Data structure design
  • 171. Excel Sheet Column Number
  • 172. Factorial Trailing Zeroes
  • 173. Binary Search Tree Iterator
  • 174. Dungeon Game
  • 175. Combine Two Tables
  • 176. Second Highest Salary
  • 177. Nth Highest Salary
  • 178. Rank Scores
  • 179. Largest Number
  • 180. Consecutive Numbers
  • 181. Employees Earning More Than Their Managers
  • 182. Duplicate Emails
  • 183. Customers Who Never Order
  • 184. Department Highest Salary
  • 185. Department Top Three Salaries
  • 186. Reverse Words in a String II
  • 187. Repeated DNA Sequences
  • Page 8
  • 189. Rotate Array
  • 190. Reverse Bits
  • 191. Number of 1 Bits
  • 196. Delete Duplicate Emails
  • 197. Rising Temperature
  • 198. House Robber
  • 199. Binary Tree Right Side View
  • 200. Number of Islands
  • 201. Bitwise AND of Numbers Range
  • 202. Happy Number
  • 203. Remove Linked List Elements
  • 204. Count Primes
  • 205. Isomorphic Strings
  • 206. Reverse Linked List
  • 207. Course Schedule
  • 208. Implement Trie (Prefix Tree)
  • 209. Minimum Size Subarray Sum
  • 210. Course Schedule II
  • 211. Add and Search Word - Data structure design
  • 212. Word Search II
  • 213. House Robber II
  • 215. Kth Largest Element in an Array
  • 216. Combination Sum III
  • 217. Contains Duplicate
  • 219. Contains Duplicate II
  • 220. Contains Duplicate III
  • 221. Maximal Square
  • 222. Count Complete Tree Nodes
  • 223. Rectangle Area
  • 224. Basic Calculator
  • 225. Implement Stack using Queues
  • 226. Invert Binary Tree
  • 227. Basic Calculator II
  • 228. Summary Ranges
  • 229. Majority Element II
  • 230. Kth Smallest Element in a BST
  • 231. Power of Two
  • 232. Implement Queue using Stacks
  • 234. 234. Palindrome Linked List
  • 235. Lowest Common Ancestor of a Binary Search Tree
  • 236. Lowest Common Ancestor of a Binary Tree
  • 237. Delete Node in a Linked List
  • 238. Product of Array Except Self
  • 239. Sliding Window Maximum
  • 240. Search a 2D Matrix II
  • 241. Different Ways to Add Parentheses
  • 242. Valid Anagram
  • 243. Shortest Word Distance
  • 244. Shortest Word Distance II
  • 245. Shortest Word Distance III
  • 246. Strobogrammatic Number
  • 247. Strobogrammatic Number II
  • 248. Strobogrammatic Number III
  • 249. Group Shifted Strings
  • 250. Count Univalue Subtrees
  • 251. Flatten 2D Vector
  • 252. Meeting Rooms
  • 253. Meeting Rooms II
  • 254. Factor Combinations
  • 255. Verify Preorder Sequence in Binary Search Tree
  • 256. Paint House
  • 257. Binary Tree Paths
  • 258. Add Digits
  • 259. 3Sum Smaller
  • 260. Single Number III
  • 261. Graph Valid Tree
  • 262. Trips and Users
  • 263. Ugly Number
  • 264. Ugly Number II
  • 266. Palindrome Permutation
  • 267. Palindrome Permutation II
  • 268. Missing Number
  • 269. Alien Dictionary
  • 270. Closest Binary Search Tree Value
  • 271. Encode and Decode Strings
  • 272. Closest Binary Search Tree Value II
  • 274. H-Index
  • 275. H-Index II
  • 276. Paint Fence
  • 277. Find the Celebrity
  • 278. First Bad Version
  • 279. Perfect Squares
  • 280. Wiggle Sort
  • 281. Zigzag Iterator
  • 282. Expression Add Operators
  • 283.283. Move Zeroes
  • 284. Peeking Iterator
  • 285. Inorder Successor in BST
  • 286. Walls and Gates
  • 287. Find the Duplicate Number
  • 288. Unique Word Abbreviation
  • 289. Game of Life
  • 290. Word Pattern
  • 291. Word Pattern II
  • 292. Nim Game
  • 293. Flip Game
  • 294. Flip Game II
  • 295. Find Median from Data Stream
  • 296. Best Meeting Point
  • 297. Serialize and Deserialize Binary Tree
  • 298. Binary Tree Longest Consecutive Sequence
  • 299. Bulls and Cows
  • 300. Longest Increasing Subsequence
  • 301. Remove Invalid Parentheses
  • 302. Smallest Rectangle Enclosing Black Pixels
  • 303. Range Sum Query - Immutable
  • 304. Range Sum Query 2D - Immutable
  • 306. Additive Number
  • 307. Range Sum Query - Mutable
  • 310. Minimum Height Trees
  • 311. Sparse Matrix Multiplication
  • 312. Burst Balloons
  • 313. Super Ugly Number
  • 314. Binary Tree Vertical Order Traversal
  • 315. Count of Smaller Numbers After Self
  • 316. Remove Duplicate Letters
  • 318. Maximum Product of Word Lengths
  • 319. Bulb Switcher
  • 320. Generalized Abbreviation
  • 322. Coin Change
  • 323. Number of Connected Components in an Undirected Graph
  • 324. Wiggle Sort II
  • 325. Maximum Size Subarray Sum Equals k
  • 325. Maximum Size Subarray Sum Equals k
  • 326. Power of Three
  • 327. Count of Range Sum
  • 328. Odd Even Linked List
  • 329. Longest Increasing Path in a Matrix
  • 330. Patching Array
  • 331. Verify Preorder Serialization of a Binary Tree
  • 332. Reconstruct Itinerary
  • 333. Largest BST Subtree
  • 334. Increasing Triplet Subsequence
  • 335. Self Crossing
  • 336. Palindrome Pairs
  • 337. House Robber III
  • 338. Counting Bits
  • 339. Nested List Weight Sum
  • 340. Longest Substring with At Most K Distinct Characters
  • 341. Flatten Nested List Iterator
  • 342. Power of Four
  • 343. Integer Break
  • 344. Reverse String
  • 345. Reverse Vowels of a String
  • 346. Moving Average from Data Stream
  • 347. Top K Frequent Elements
  • 348. Design Tic-Tac-Toe
  • 349. Intersection of Two Arrays
  • 350. Intersection of Two Arrays II
  • 352. Data Stream as Disjoint Intervals
  • 353. Design Snake Game
  • 354. Russian Doll Envelopes
  • 355. Design Twitter
  • 356. Line Reflection
  • 357. Count Numbers with Unique Digits
  • 358. Rearrange String k Distance Apart
  • 359. Logger Rate Limiter
  • 360. Sort Transformed Array
  • 361. Bomb Enemy
  • 362. Design Hit Counter
  • 363. Max Sum of Rectangle No Larger Than K
  • 364. Nested List Weight Sum II
  • 365. Water and Jug Problem
  • 366. Find Leaves of Binary Tree
  • 367. Valid Perfect Square
  • 368. Largest Divisible Subset
  • 369. Plus One Linked List
  • 370. Range Addition
  • 371. Sum of Two Integers
  • 372. Super Pow
  • 373. Find K Pairs with Smallest Sums
  • 374. Guess Number Higher or Lower
  • 375. Guess Number Higher or Lower II
  • 376. Wiggle Subsequence
  • 377. Combination Sum IV
  • 380. Insert Delete GetRandom O(1)
  • 381. Insert Delete GetRandom O(1) - Duplicates allowed
  • 382. Linked List Random Node
  • 383. Ransom Note
  • 384. Shuffle an Array
  • 385. Mini Parser
  • 386. Third Maximum Number
  • 387. Permutation in String
Powered by GitBook
On this page

8. String to Integer (atoi)

String to Integer (atoi)

Implement atoi to convert a string to an integer.

Hint: Carefully consider all possible input cases. If you want a challenge, please do not see below and ask yourself what are the possible input cases.

Notes: It is intended for this problem to be specified vaguely (ie, no given input specs). You are responsible to gather all the input requirements up front.

Update (2015-02-10): The signature of the C++ function had been updated. If you still see your function signature accepts a const char * argument, please click the reload button to reset your code definition.

spoilers alert... click to show requirements for atoi.

Requirements for atoi:

The function first discards as many whitespace characters as necessary until the first non-whitespace character is found. Then, starting from this character, takes an optional initial plus or minus sign followed by as many numerical digits as possible, and interprets them as a numerical value.

The string can contain additional characters after those that form the integral number, which are ignored and have no effect on the behavior of this function.

If the first sequence of non-whitespace characters in str is not a valid integral number, or if no such sequence exists because either str is empty or it contains only whitespace characters, no conversion is performed.

If no valid conversion could be performed, a zero value is returned. If the correct value is out of the range of representable values, INT_MAX (2147483647) or INT_MIN (-2147483648) is returned.

Solution

public class Solution {

    public int atoi(String str){
        if(str == null) return 0;
        int size = str.length();
        if(size == 0) return 0;
        str = str.trim();
        size = str.length();
        boolean negativeFlag = false;
        if(str.charAt(0) == '-') negativeFlag = true;
        int startIndex = 0;
        if(negativeFlag) startIndex = 1;
        if(str.charAt(0) == '+') startIndex ++;
        double result = 0;
        for(; startIndex < size; startIndex ++){
            char x = str.charAt(startIndex);
            if( x < '0' || x > '9') break;

            result = result * 10 + x - '0';
        }

        if(negativeFlag){
            if(result > Integer.MAX_VALUE) return Integer.MIN_VALUE;
            return 0 - (int)result;

        }
        else{
            if(result > Integer.MAX_VALUE) return Integer.MAX_VALUE;
            return (int) result;
        }
    }

    public static void main(String[] args) {
        Solution s = new Solution();
            System.out.println(s.atoi("     -0012a42"));
            System.out.println(s.atoi("-1"));
            System.out.println(s.atoi("0"));
            System.out.println(s.atoi("1000000000"));
            System.out.println(s.atoi("2147483648"));

    }
}
Previous7. Reverse IntegerNext9. Palindrome Number

Last updated 2 years ago