leetcode 7 정수 반전 (정수 디지털 작업 에 대한 간결 한 알고리즘)
32 비트 의 기호 정 수 를 보 여 주 려 면 이 정수 중의 모든 숫자 를 반전 시 켜 야 한다.
예시 1:
입력: 123 출력: 321 예시 2:
입력: - 123 출력: - 321 예시 3:
입력: 120 출력: 21 주의:
만약 에 우리 의 환경 이 32 비트 의 기호 정수 만 저장 할 수 있다 고 가정 하면 그 수치 범 위 는? [−231, 231 − 1]。이 가설 에 따 르 면 반전 후 정수 가 넘 치면 0 으로 돌아 갑 니 다.
[문제 풀이]
플러스 와 마이너스 가 뒤 바 뀌 어 새로운 숫자 에 존재 하 므 로, 원래 의 숫자 마지막 자리 부터 새 숫자 에 누적 해 야 한다.
즉 + = x% 10
첫 번 째 수 를 처리 한 후에 두 번 째, 즉 x% 100 을 처리 해 야 합 니 다. 순환 에 가입 하면 순환 조건 은 다음 과 같 습 니 다.
x / 10
되 돌아 오 는 정형 re 에 대해 매번 새로운 수 를 넣 을 때마다 원래 의 수 는 왼쪽으로 한 자 리 를 옮 깁 니 다. 즉,:
re * 10
넘 치 는 판단 에 대해 저 는 처음에 int 를 넘 치 게 하 는 생각 이 었 습 니 다. 넘 치 면 re 값 의 플러스 와 마이너스 가 뒤 바 뀌 었 습 니 다. 이때 원래 X 의 값 의 플러스 와 마이너스 가 re 와 다르다 고 판단 하면 됩 니 다.
그런데 leetcode 가 틀 렸 어!!그것 은 나 로 하여 금 자 연 스 럽 게 넘 치지 못 하 게 한다!!
네, 플랫폼 으로 고 개 를 숙 일 게 요.
다음은 re 를 long int 로 설정 하여 2 ^ 31 - 1 이상 인지 - 2 ^ 31 + 1 이하 인지 판단 하 는 것 입 니 다.
1 int reverse(int x){
2 long int re = 0;
3 for(; x; x /= 10)
4 re = re * 10 + x % 10;
5 if (re > 2147483647 || re < -2147483648)
6 return 0;
7 else
8 return re;
9 }
코드
실행 결과:
통과 하 다.
상세 한 상황 을 나타내다
실행 시간: 0 ms, 모든 C 제출 중 100.00% 의 사용 자 를 격파 하 였 습 니 다
메모리 소모: 5.9MB, 모든 C 제출 중 100.00% 의 사용 자 를 격파 하 였 습 니 다
나 는 초보 프로그래머 이다. 나 는 가장 간단 한 문제 부터 천천히 시작한다. 비록 간단 하지만, 나 는 모든 것 을 최선 을 다 해 야 한다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.