char last = 0;
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
//找到最后一个字符
if (i == s.length() - 1){
last = s.charAt(i);
}
for (int j = left; j < t.length(); j++) {
char c1 = t.charAt(j);
if (last != 0 && last == c1){
return true;
}
if (c == c1){
left++;
break;
}
left++;
}
}
return false;
}
提交通过了,总感觉哪里不对劲,但也想不清楚,且看看官方答案再说吧!
大佬指点江山
public boolean isSubsequence(String s, String t) {
int n = s.length(), m = t.length();
int i = 0, j = 0;
while (i < n && j < m) {
if (s.charAt(i) == t.charAt(j)) {
i++;
}
j++;
}
return i == n;
}
这个思想啊,真的是有待进步。
2、LeetCode 409.最长回文数
题目
给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。
在构造过程中,请注意区分大小写。比如
"Aa"不能当做一个回文字符串。
小编思路
1、回文字符串,表示reverse之后,与原字符串一致
2、表明只能有一个奇数的字母,其余字母都是偶数
3、如果有奇数,则获取个数最多的那个奇数,因为回文数,最多只能有一个奇数
4、如果没有奇数字母,长度为偶数之和
小编菜解
public static int longestPalindrome(String s) {
if (s == null || s.length()==0){
return 0;
}
//将字符串中字符放入map,值为字符的个数
Map<Character,Integer> map = new HashMap<>();
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
map.put(c,map.getOrDefault(c,0) + 1);
}
//偶数字母总长度
int size = 0;
//奇数字母最大长度
int oddSize = 0;
//只能有一个奇数的字母,其余字母都是偶数
List removeCharacterlist = new ArrayList<>();
for(Map.Entry<Character,Integer> entry:map.entrySet()){
//获取奇数字母最大长度
if (entry.getValue()%2 == 1){
if (entry.getValue() > oddSize){
oddSize = entry.getValue();
}
}else{//如果是偶数,则获取长度,直接相加
size += entry.getValue();
}
}
return size + oddSize;
}
错误的原因是对回文数的理解有误,如果为奇数,取它的偶数个,也是可以的。
小编菜解进阶版
public int longestPalindrome(String s) {
if (s == null || s.length()==0){
return 0;
}
//将字符串中字符放入map,值为字符的个数
Map<Character,Integer> map = new HashMap<>();
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
map.put(c,map.getOrDefault(c,0) + 1);
}
boolean isHaveOdd = false;
//偶数字母总长度
int size = 0;
//奇数字母最大长度
int oddSize = 0;
//只能有一个奇数的字母,其余字母都是偶数
List removeCharacterlist = new ArrayList<>();
for(Map.Entry<Character,Integer> entry:map.entrySet()){
//获取奇数字母最大长度
if (entry.getValue()%2 == 1){
size += entry.getValue()-1;
isHaveOdd = true;
}else{//如果是偶数
size += entry.getValue();
}
}
return isHaveOdd?size + oddSize + 1:size + oddSize;
}
小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。



由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)

面试题总结
其它面试题(springboot、mybatis、并发、java中高级面试总结等)



如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
[外链图片转存中…(img-f5055AM0-1711100680885)]
面试题总结
其它面试题(springboot、mybatis、并发、java中高级面试总结等)
[外链图片转存中…(img-iACIPlc4-1711100680885)]
[外链图片转存中…(img-vZWSv6yU-1711100680886)]
[外链图片转存中…(img-uxGkj9D2-1711100680887)]
本文讨论了如何在Java中正确解决LeetCode409题——最长回文数,分析了初始解法的误区,并提供了进阶版本的解决方案,强调了回文串中奇数字符处理的改进。同时,作者分享了Java开发者的学习资源和成长经验。


81

被折叠的 条评论
为什么被折叠?



