[LC] 정수 8. 문자열 (atoi 함수)

구현  atoi 문자열을 정수로 변환한다.

공백이 아닌 첫 번째 문자까지 필요한만큼 공백 문자로 기능 첫번째 폐기가 발견된다. 그런 다음,이 문자에서 시작, 옵션 초기 플러스 또는 마이너스 기호 많은 수치 가능한 숫자 및 숫자 값으로 해석을로 다음에 걸립니다.

문자열은 무시하고이 함수의 동작에 영향을 미치지되는 적분 수를 형성하는 그 후 추가 문자를 포함 할 수 있습니다.

STR에서 공백이 아닌 문자의 첫 번째 순서가 유효한 정수가 아니거나 경우 중 하나 STR이 비어 있거나 단지 공백 문자가 포함되어 있기 때문에 이러한 순서가 존재하지 않는 경우, 변환이 수행되지 않습니다.

유효한 변환이 수행 될 수 있다면, 제로 값이 반환됩니다.

노트 :

  • 만 공백 문자는  ' ' 공백 문자로 간주됩니다.
  • [- 1 -231, 231] : 우리가 단지 32 비트 정수 범위의 정수를 저장할 수있는 환경 다루고 가정한다. 수치가 표현할 수있는 값의 범위 INT_MAX (231 - 1)의 벗어난 경우 나 INT_MIN (-231)이 반환된다.

예 1 :

입력 : "42" 
출력 : 42

예 2 :

입력 : "-42" 
출력 : -42 
설명 : 공백이 아닌 첫 번째 문자가 '-'빼기 기호입니다. 
             그런 다음 42를 얻을 가능한 한 많은 수치 자리로 가라.

예 3 :

입력 : "4193 단어" 
출력 : 4193 
설명 : 다음 문자가 숫자 숫자가 아닌로 변환 '3'자리에서 멈 춥니 다.

예 4 :

입력 : "단어와 987" 
출력 : 0 
설명 : 첫 번째 공백이 아닌 문자가 숫자하지 않은, 'W'는 
             숫자 또는 +/- 기호. 따라서 유효한 변환이 수행 될 수 없었다.

예 5 :

입력 : "-91283472332" 
출력 : -2147483648 
설명 : 수는 "-91283472332"부호있는 32 비트 정수의 범위를 벗어났습니다. 
             Thefore INT_MIN (-231)가 리턴됩니다.

클래스 솔루션 {
     공공  INT의 myAtoi (문자열 STR) {
         경우 (캐릭터 == null이 ) {
             반환 0 ; 
        } 
        STR = str.trim ();
        경우 (str.length () == 0 ) {
              0 ; 
        } 
        INT 제 = 0, 기호 = 1 ;
        // 긴 유형 assin; 
         고해상도 = 0 ;
        경우 (str.charAt (0) == '+' ) {  + = 1 ; 
        } 다른 경우 ( '-'str.charAt (0) == ) { 
            부호 = -1 ;  + = 1 ; 
        } 
        에 대해 ( INT 처음 =; I <str.length (); I ++ ) {
             경우 (! Character.isDigit (str.charAt (I))) {
                 리턴 기호 * ( INT ) 입술; 
            } 
            입술 = 10 * 입술 str.charAt + (I) - '0' ;
            경우 (부호 == 1 && 입술> 에 Integer.MAX_VALUE) {
                 반환 에 Integer.MAX_VALUE 단계; 
            } 
            경우(부호 == -1 && 입술> 에 Integer.MAX_VALUE) {
                 복귀 는 Integer.MIN_VALUE 단계; 
            }         
        } 
        반환 기호 * ( INT ) 고해상도; 
    } 
}

 

추천

출처www.cnblogs.com/xuanlu/p/11875959.html