难以归类的算法题


一、整数反转

LC 07

// 解法1:
public int reverse(int x) {
    long n = 0;
    while(x != 0) {
        n = n * 10 + x % 10;
        x = x / 10;
    }
    return (int)n == n ? (int)n : 0;
}

// 解法2:
public class Reverse {
    public int reverse(int x) {
        StringBuilder sb = new StringBuilder();
        long transfer = Math.abs((long) x);
        // 将 long 变量 l 转换成字符串
        String s = new StringBuilder(String.valueOf(transfer)).reverse().toString();
        if (x < 0) {
            sb.append('-');
        }
        String s1 = sb.append(s).toString();
        long l = Long.parseLong(s1);
        if (l > Math.pow(2, 31) - 1 || l < (-1) * Math.pow(2, 31)) {
            return 0;
        }
        return Integer.parseInt(s1);
    }
}

LC 09

回文数

// 给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。
// 回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。
// 方法:反转一半即可
class Solution {
    public boolean isPalindrome(int x) {
         if (x == 0) return true;
		if (x < 0 || x % 10 == 0) return false;
		int ret = 0;	
         while(x > ret) {
             ret = ret * 10 + x % 10;	// 121  1
             x /= 10;	// 121 12
         }
         return x == ret || x == ret / 10;
    }
}

文章作者: Prannt
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Prannt !
评论
  目录