2013년 2월 13일 수요일

String to Integer (atoi)

 public int atoi(String str) {
  long rv = 0;
  boolean readStart = false;
  boolean negativeSign = false;
  int len = str.length();

  for (int i = 0; i < len; i++) {
   char c = str.charAt(i);

   if (c >= '0' && c <= '9') {
    readStart = true;
    rv *= 10;
    rv += (c - '0');
   } else if (readStart)
    break;
   else if (c == '-') {
    negativeSign = true;
    readStart = true;
   } else if (c == '+')
    readStart = true;
   else if (c >= 'a' && c <= 'z')
    break;
  }

  if (negativeSign)
   rv *= -1;

  if (rv > Integer.MAX_VALUE)
   return Integer.MAX_VALUE;
  else if (rv < Integer.MIN_VALUE)
   return Integer.MIN_VALUE;

  return (int) rv;
 }

댓글 없음:

댓글 쓰기