一,取得十进制数字上的每一位
用当前数字与10求余数,该余数即是当前数字最低位上的数字,接下来我们将当前数字除以10,继续求它与10的余数,该数字即是次低位上的数字,重复上述过程直到当前数字为0为止。
List<Integer> list = new ArrayList<>(); // 取得x上的每一位 while(x>0){ list.add(x%10); x/=10; }
二, 判断回文
判断一个字符串是否是回文我们通常采用剥洋葱的方式,从最外层向内比较,解题时可以定义左右两个指针,初始时左指针指向下标0,右指针指向字符串末尾位,如果当前俩指针指向的值不一致,直接返回false。反之,左指针加一,右指针减一,向内移动一层继续比较,重复此过程直到左指针不再小于右指针为止。
public boolean isPalindrome(String s) { // 定义左右指针 int left=0,right=list.size()-1; while(left<right){ // 左右指针指向的数字不同时,返回false if(s.charAt(left) != s.charAt(right)){ return false; } left++; right--; } return true; }
三,不使用额外变量交换两个数字或字符的值