## é¢ç®æè¿°ï¼ç®åé¾åº¦ï¼  å¾ç®åï¼å°±æ¯è¾å ¥æ´æ°ï¼è¾åºå®çåç½®ã 第ä¸ååºå°±æ¯ï¼ åä½å¾å°ä¸ªä½æ°ï¼ç¶åé¤ä»¥ 10 å»æä¸ªä½æ°ï¼ç¶åç¨ä¸ä¸ªåéä¿ååç½®çæ°ã ```java public int reverse(int x) { int rev = 0; while (x != 0) { int pop = x % 10; x /= 10; rev = rev * 10 + pop; } return rev; } ``` ç¶åä¼¼ä¹ä¸æ¯é£ä¹çæ³ã  为ä»ä¹å¢ï¼åç½®è¿æ¥ä¸åºè¯¥æ¯ 9646324351 åãå ¶å®é¢ç®é讲äºï¼int çèå´æ¯ $$[-2^{31} ,2^{31}-1]$$ ä¹å°±æ¯ $$[-2147483648,2147483647] $$ ãææ¾ 9646324351 è¶ åºäºèå´ï¼é æäºæº¢åºãæä»¥æä»¬éè¦å¨è¾åºåï¼å¤ææ¯å¦æº¢åºã é®é¢çå ³é®å°±æ¯ä¸è¾¹çä¸å¥äºã rev = rev * 10 + pop; 为äºåºå两个 rev ï¼æ´å¥½ç说æï¼æä»¬å¼å ¥ temp ã temp = rev * 10 + pop; rev = temp; æä»¬å¯¹ temp = rev * 10 + pop; è¿è¡è®¨è®ºãintMAX = 2147483647 , intMin = - 2147483648 ã 对äºå¤§äº intMax çè®¨è®ºï¼æ¤æ¶ x ä¸å®æ¯æ£æ°ï¼pop 乿¯æ£æ°ã * 妿 rev > intMax / 10 ï¼é£ä¹æ²¡çè¯´ï¼æ¤æ¶è¯å®æº¢åºäºã * 妿 rev == intMax / 10 = 2147483647 / 10 = 214748364 ï¼æ¤æ¶ rev * 10 å°±æ¯ 2147483640 妿 pop å¤§äº 7 ï¼é£ä¹å°±ä¸å®æº¢åºäºã使¯ï¼å¦æå设 pop çäº 8ï¼é£ä¹æå³çåæ° x æ¯ 8463847412 äºï¼è¾å ¥çæ¯ int ï¼èæ¤æ¶æ¯æº¢åºçç¶æï¼æä»¥ä¸å¯è½è¾å ¥ï¼æä»¥æå³ç pop ä¸å¯è½å¤§äº 7 ï¼ä¹å°±æå³ç rev == intMax / 10 æ¶ä¸ä¼é ææº¢åºã * 妿 rev < intMax / 10 ï¼æå³ç rev æå¤§æ¯ 214748363 ï¼ rev * 10 å°±æ¯ 2147483630 , æ¤æ¶åå ä¸ pop ï¼ä¸å®ä¸ä¼æº¢åºã 对äºå°äº intMin ç讨论åçã ```java public int reverse(int x) { int rev = 0; while (x != 0) { int pop = x % 10; x /= 10; if (rev > Integer.MAX_VALUE/10 ) return 0; if (rev < Integer.MIN_VALUE/10 ) return 0; rev = rev * 10 + pop; } return rev; } ``` æ¶é´å¤æåº¦ï¼å¾ªç¯å¤å°æ¬¡å¢ï¼æ°åæå¤å°ä½ï¼å°±å¾ªç¯å¤å°æ¬¡ï¼ä¹å°±æ¯ $$log_{10}(x) + 1$$ æ¬¡ï¼æä»¥æ¶é´å¤æåº¦æ¯ Oï¼logï¼xï¼ï¼ã 空é´å¤æåº¦ï¼Oï¼1ï¼ã å½ç¶æä»¬å¯ä»¥ä¸ç¨æèé£ä¹å¤ï¼ç¨ä¸ç§å·æçæ¹å¼ AC ï¼æä»¬ç´æ¥æ rev å®ä¹æ long ï¼ç¶åè¾åºå夿 rev æ¯ä¸æ¯å¨èå´å ï¼ä¸å¨çè¯ç´æ¥è¾åº 0 ã ```java public int reverse(int x) { long rev = 0; while (x != 0) { int pop = x % 10; x /= 10; rev = rev * 10 + pop; } if (rev > Integer.MAX_VALUE || rev < Integer.MIN_VALUE ) return 0; return (int)rev; } ``` ## æ»ç» æ¯è¾ç®åçä¸éé¢ï¼ä¸»è¦æ¯å¨è夿æ¯ä¸æ¯æº¢åºï¼åæ¯è½»æ¾çä¸å¤©ï¼