力扣 ---2020.2.13

7. 整数反转

class Solution {
    public int reverse(int x) {
        String str = Integer.toString(x);
        int flag = 1;
        if(x < 0){
            flag = -1;
            str = str.substring(1);
        }  
        try{
            return Integer.valueOf((new StringBuilder(str)).reverse().toString())*flag;
        }catch (Exception e){
            return 0;
        }
    }
}

知识拓展:
reverse()方法表示的是将一个输入流倒叙输出。

举例:
StringBuffer sb =new StringBuffer(“abcd”);
System.out.println(sb.reverse().toString());
输出结果:dcba;
备注:此方法针对的是io流,不能针对字符串。

substring() 方法返回字符串的子字符串。

class Solution {
    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;
    }
}

190. 颠倒二进制位

public class Solution {
    // you need treat n as an unsigned value
    public int reverseBits(int n) {
        return Integer.reverse(n);
    }
}
//位运算
public class Solution {
    public int reverseBits(int n) {
        int a=0;
        for(int i=0;i<=31;i++){
            //  1&(n>>i)  获取n的第i位值 , <<(31-i)) 左移 31-i 位
            a=a+((1&(n>>i))<<(31-i));
        }
        return a; 
    }
}

389. 找不同

class Solution {
    public char findTheDifference(String s, String t) {
        int sum = 0;
        for (char c : t.toCharArray())
            sum += c;
        for (char c : s.toCharArray())
            sum -= c;
        return (char)sum;
    }
}
//位运算
class Solution {
    public static char findTheDifference(String s, String t) {
       char result = 0;
        for (int i = 0; i < s.length(); i++){
            result ^= s.charAt(i);
        }
        for (int i = 0; i < t.length(); i++){
            result ^= t.charAt(i);
        }
        return result;
    }
}
class Solution {
    public char findTheDifference(String s, String t) {
        char[] ss = s.toCharArray();
        char[] tt = t.toCharArray();
        int sum = 0;
        for(int i=0;i < ss.length;i++){
            sum += (int)ss[i];
            sum -= (int)tt[i];
        }
        sum += (int)tt[tt.length-1];
        return (char)sum;
    }
}
class Solution {
    public static char findTheDifference(String s, String t) {
        char[] ss = s.toCharArray();
        char[] tt = t.toCharArray();
        Arrays.sort(ss);
        Arrays.sort(tt);
        for (int i = 0; i < ss.length; i++) {
            if (ss[i] != tt[i]){
                return tt[i];
            }
        }
        return tt[tt.length-1];
    }
}

总体来说,位运算这方面还需要多多提升。同时,java的基础知识还不够扎实,也需要不断提升。最后,思路和思考问题的角度也还远远不够,也需要不断练习和提升。

你知道的越多,你不知道的越多。
有道无术,术尚可求,有术无道,止于术。
如有其它问题,欢迎大家留言,我们一起讨论,一起学习,一起进步

你可能感兴趣的:(数据结构与算法)