1. int 정수를 문자열로 변환하고 오버플로 캡처
class Solution { public int reverse(int x) { long nums = 0; int temp = 1; try { temp = x / Math.abs(x); StringBuilder num = new StringBuilder(); num.append(Math.abs(x)); nums = Long.parseLong(num.reverse().toString()); if(nums > Math.pow(2, 31) - 1) { return 0; } } catch (Exception e) { // TODO: handle exception return 0; } return (int)nums*temp; } }
String 변환은 덜 효율적이며 더 많은 라이브러리 기능을 사용합니다.
(권장 학습 비디오 튜토리얼: java 비디오 튜토리얼)
2. 나머지 방법
class Solution { public int reverse(int x) { int ans = 0; while(x != 0) { // 判断溢出 if((ans * 10) / 10 != ans) { ans = 0; break; } // ans*10 没有溢出 ans = ans * 10 + x % 10; x /= 10; } return ans; } }
(ans * 10) / 10 그 중 ans*10은 실제로 Java Virtual Machine이 내부적으로 숫자형 승격을 수행하는데, 즉 오버플로가 발생하면 Long형 데이터를 임시로 저장하고 최종적으로 축소 변환을 통해 하위 32자리 값을 그대로 유지하게 된다. (ans * 10) / 10 != ans를 얻습니다. 따라서 32비트 정수만 저장한다는 조건은 충족될 수 없습니다.
추천 관련 기사 및 튜토리얼: java 입문 튜토리얼
위 내용은 Java는 정수 반전을 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!