Convert a string to int without using int.Parse()
๐ก Concept: Manual String to Integer Conversion
Convert a numeric string to an integer by processing each character without built-in parsing functions.
๐ Quick Intro
This method teaches fundamental understanding of character codes and number systems.
๐ง Analogy
Like reading digits one by one on a calculator and calculating the total value manually.
๐ง Technical Explanation
- Traverse each character in the string.
- Convert character digit to numeric value by subtracting '0'.
- Accumulate the total by multiplying by 10 and adding digit.
- Handle optional signs (+/-).
- Throw exceptions on invalid input.
๐ฏ Use Cases
- โ Environments without built-in parse functions.
- โ Educational purposes.
- โ Custom parsing needs.
- โ Understanding ASCII and numeric conversion.
๐ป Code Example
public static int StringToInt(string input) {
if (string.IsNullOrEmpty(input)) throw new ArgumentException(""Input string is null or empty"");
int sign = 1;
int result = 0;
int start = 0;
if (input[0] == '-') {
sign = -1;
start = 1;
} else if (input[0] == '+') {
start = 1;
}
for (int i = start; i < input.Length; i++) {
if (input[i] < '0' || input[i] > '9') throw new FormatException(""Invalid character"");
result = result * 10 + (input[i] - '0');
}
return sign * result;
}

โ Interview Q&A
Q1: Why convert string manually?
A: To understand parsing basics.
Q2: How to handle invalid input?
A: Throw exceptions.
Q3: Can it handle signs?
A: Yes, + and - are supported.
Q4: What is time complexity?
A: O(n).
Q5: Is this approach faster than int.Parse()?
A: Usually not.
Q6: Can it handle large numbers?
A: Limited by int range.
Q7: What about whitespace?
A: Input should be trimmed.
Q8: How to extend for other bases?
A: Adjust digit conversion.
Q9: Is this thread-safe?
A: Yes, no shared state.
Q10: Alternatives?
A: int.TryParse and Convert.ToInt32.
๐ MCQs
Q1. Why convert string manually?
- For speed
- Understand parsing basics
- Avoid bugs
- For security
Q2. How to handle invalid input?
- Ignore
- Throw exceptions
- Return zero
- Return max int
Q3. Can it handle signs?
- No
- Yes
- Maybe
- Sometimes
Q4. What is time complexity?
- O(1)
- O(n)
- O(n^2)
- O(log n)
Q5. Is this approach faster than int.Parse()?
- Yes
- No
- Sometimes
- Always
Q6. Can it handle large numbers?
- Yes
- No
- Sometimes
- Always
Q7. What about whitespace?
- Ignore
- Trim
- Throw error
- Replace
Q8. How to extend for other bases?
- Use built-in
- Adjust digit conversion
- Use regex
- Use hash
Q9. Is this thread-safe?
- No
- Yes
- Sometimes
- Rarely
Q10. Alternatives?
- int.Parse
- int.TryParse and Convert.ToInt32
- Convert.ToString
- ToString
๐ก Bonus Insight
Manual conversion helps grasp the numeric system and character encoding basics.
๐ PDF Download
Need a handy summary for your notes? Download this topic as a PDF!