https://leetcode.com/problems/string-to-integer-atoi/
문자열을 32비트 signed 정수로 변환하는 함수 구현
Algorithm
space는 무시
public class Solution {
public int MyAtoi(string s) {
if (s.Length == 0) return 0;
string num = "";
bool isSigned = false;
int currIndex = 0;
// 공백만큼 index 옮기기
for (int i = 0; i < s.Length; i++)
{
if (s[i] != ' ') break;
currIndex ++;
}
if (currIndex == s.Length) return 0;
// 공백 다음 처음 만난 문자가 부호인지 확인
switch (s[currIndex])
{
case '-':
isSigned = true;
currIndex ++;
break;
case '+':
currIndex ++;
break;
}
for (int i = currIndex; i < s.Length; i ++)
{
// 숫자면 num에 더해줌
if (int.TryParse(s[i].ToString(), out int value))
{
num += value.ToString();
}
else
{ // 다른 문자 만난 케이스
if (num == "") return 0;
break;
}
}
Double.TryParse(num, out double answer);
// 부호 적용
if (isSigned) { answer *= -1; }
// 주어진 범위로 제한
answer = Math.Clamp(answer, -Math.Pow(2, 31), Math.Pow(2, 31) - 1);
return (int)answer;
}
}
(이 문제는 시간 의미 x. 같은 풀이 기준 30~90까지 나옴. 즉, 미세한 차이)