原题链接:力扣
描述:
给你一个字符串 s
,找到 s
中最长的回文子串。
示例 1:
输入:s = "babad" 输出:"bab" 解释:"aba" 同样是符合题意的答案。
解题思路:
第一版,分为两步吧,第一步遍历找出来所有的位置的数字,然后相反的顺序去比较就好了。
这时空间复杂度应该是O(n)的。
第二版,这个可以优化到O(1)的时间复杂度的。我们不要用List去存储,而直接用int去存储这个结果也是可以的。
代码:
public boolean isPalindrome(int x) {
if (x < 0) {
return false;
}
if (x == 0) {
return true;
}
List<Integer> list = new ArrayList<>();
int k = x;
while (k > 0) {
list.add(k % 10);
k = k / 10;
}
for (int i = 0; i < list.size(); i++) {
if (i == 0) {
k = list.get(i);
} else {
k = k * 10 + +list.get(i);
}
}
return k == x;
}
第二版:
public boolean isPalindrome(int x) {
if (x < 0) {
return false;
}
if (x == 0) {
return true;
}
int k = x;
int result = 0;
while (k > 0) {
result = result * 10 + +k % 10;
k = k / 10;
}
return result == x;
}