序言
学习随笔是本人对自己一天的自学回顾,由于本人是非科班出身,不懂很多cs的专业术语,所以难免会有些错误,望各位批评指正,本人定当悉心接受并立即改正。希望自己能够慢慢坚持下去,坚持转行的道路,坚持每天学习的输出。
刷题篇
LeetCode
1.题目
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
2.大致思路
暴力解法:转成字符串,然后比较,其中负数肯定不是回文数,故单独写出。
还一种很容易想到的方法:通过取余数完成倒排存入到ArrayList中,之后求和与原数比较。但要注意几点,也是我在测试时发现的,具体在代码中体现。
以上两种方法都不是很好。
3.代码
class Solution {
public boolean isPalindrome(int x) {
if(x < 0) return false; //负数不是回文数
String xstr = String.valueOf(x); // int转String
for(int i = 0,j = xstr.length() - 1; i < xstr.length(); i++,j--){
//这里好像不必遍历整个字符串,遍历一半即可 所以可改成 i < j
if(xstr.charAt(i) != xstr.charAt(j)) return false;
}
return true;
}
}
class Solution {
public boolean isPalindrome(int x) {
int count =0;
int xnew = 0;
int x1 = x;
if(x < 0) return false;//负数不是回文数
if(x == 2147483647) return false;
//int的最大值2147483647,若超过了max,在后面计算xnew时,永远是这个最大值,反倒出错
ArrayList<Integer> num = new ArrayList<>();
while(x != 0){
//第一次循环条件写了x%10!=0,但这样101就很明显就会变成false,但实际是true
num.add(x%10);//通过取余完成翻转
x = x / 10;
count++;
}
int count1 = count;
for(int i = 0;i < count1 ;i++){
xnew += num.get(i) * Math.pow(10,count-1);
//通过get方法和Math类中的pow方法,计算xnew,注意是count-1
count--;
}
if(xnew == x1)
return true;
else
return false;
}
}
4.多说两句
用到的类 String,类方法 length() , charAt( int index) , valueOf( int i )。
第一次自己写Java,所以上面的方法,基本不记得,只有length稍微有点印象,不过在写的时候还是忘记了写括号(),害。
高级解法以后再补,先完成c到Java的过渡,并且完成期末的安全着陆(后者更关键)。
切忌心浮气躁,急功近利。学习要慢慢来。
共勉!