Lettcode_7_Reverse Integer -- 뒤 집기 정수

본 고 는 학습 중의 총 결 입 니 다. 전재 하 는 것 을 환영 하지만 출처 를 밝 혀 주 십시오.http://blog.csdn.net/pistolove/article/details/41578077
Reverse Integer
 
Reverse digits of an integer.
Example1: x = 123, return 321 Example2: x = -123, return -321
생각:
(1) 이 알고리즘 문 제 는 OJ 에서 비교적 간단 한 문제 에 속한다.제 의 는 주어진 정 수 를 역순 으로 하 는 것 이지 만 몇 가지 특수 한 상황 과 관련 되 어 고려 해 야 한 다 는 것 이다.
(2) 처리 하기 편리 하도록 정 수 를 문자열 로 변환 합 니 다.우 리 는 이 문자열 을 한 번 만 옮 겨 다 니 면 된다.
(3) 옮 겨 다 니 는 과정 에서 양음 수 를 판단 해 야 한다. 문자열 의 길이 가 0 보다 클 때 첫 번 째 문 자 를 먼저 취하 여 '-' 인지 아 닌 지 를 판단 하고 같다 면
         바로 음수 입 니 다. 표지 위 치 를 설정 해 야 합 니 다.
(4) 계속 옮 겨 다 니 는 과정 에서 문자 가 숫자 인지 아 닌 지 를 판단 한 다음 에 표지 위 치 를 통 해 정 부 를 판단 한 후에 누적 작업 을 한다.
(5) 주의해 야 할 때 뒤 집 힌 후의 정 수 는 int 의 최대 치 를 초과 할 수 있 습 니 다. 경 계 를 넘 지 않도록 우리 가 정의 하 는 sun 의 유형 은 반드시 long 이 어야 합 니 다. 이렇게 하면 크 거나 크 거나
         int 의 최대 값 과 최소 값 보다 작 을 때 0 을 되 돌려 줍 니 다.나머지 상황 은 log 강 을 int 로 바 꾸 고 결 과 를 되 돌려 줍 니 다.
(6) 상기 몇 가지 측면 에 주의 한 후에 OJ 가 통과 하 는 데 문제 가 없 을 것 이다.
알고리즘 구현 코드 는 다음 과 같 습 니 다. (도움 이 되 기 를 바 랍 니 다. 감사합니다.)
public static int reverse(int x) {
	String s = String.valueOf(x);
	long sum = 0;
	boolean isnegitive = false;
	for (int i = s.length()-1; i >=0 ; i--) {
		if(s.charAt(0)=='-'){
			isnegitive = true;
		}
		
		if( Character.isDigit(s.charAt(i))){
			if(isnegitive){
				sum = sum * 10 - Integer.parseInt(String.valueOf(s.charAt(i)));	
			}else{
				sum = sum * 10 + Integer.parseInt(String.valueOf(s.charAt(i)));
			}
		}
	} 
	 
	if(sum>Integer.MAX_VALUE || sum<Integer.MIN_VALUE){
		 return 0;
	}
	 
	return (int)sum;
}

좋은 웹페이지 즐겨찾기