判断子序列、最长回文数、Fizz Buzz

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;

}

大佬指点江山

public static int longestPalindrome(String s) {

int[] count = new int[128];

int length = s.length();

for (int i = 0; i < length; ++i) {

char c = s.charAt(i);

count[c]++;

}

int ans = 0;

for (int v: count) {

//大佬这块的思想很好

ans += v / 2 * 2;

if (v % 2 == 1 && ans % 2 == 0) {

ans++;

}

}

return ans;

}

3、LeetCode 412.Fizz Buzz


题目

写一个程序,输出从 1 到 n 数字的字符串表示。

1. 如果 n 是3的倍数,输出“Fizz”;

2. 如果 n 是5的倍数,输出“Buzz”;

3.如果 n 同时是3和5的倍数,输出 “FizzBuzz”。

小编菜解

public List fizzBuzz(int n) {

final String const_FIZZ = “Fizz”;

final String const_BUZZ = “Buzz”;

List list = new ArrayList<>();

for (int i = 1; i <= n; i++) {

if (i%30 && i%50){

list.add(const_FIZZ+const_BUZZ);

}else if (i%3 == 0){

list.add(const_FIZZ);

}else if (i%5 == 0){

list.add(const_BUZZ);

}else{

list.add(String.valueOf(i));

}

}

return list;

}

这道题有点简单了点吧?

如何快速更新自己的技术积累?

  • 在现有的项目里,深挖技术,比如用到netty可以把相关底层代码和要点都看起来。
  • 如果不知道目前的努力方向,就看自己的领导或公司里技术强的人在学什么。
  • 知道努力方向后不知道该怎么学,就到处去找相关资料然后练习。
  • 学习以后不知道有没有学成,则可以通过面试去检验。

我个人觉得面试也像是一场全新的征程,失败和胜利都是平常之事。所以,劝各位不要因为面试失败而灰心、丧失斗志。也不要因为面试通过而沾沾自喜,等待你的将是更美好的未来,继续加油!

以上面试专题的答小编案整理成面试文档了,文档里有答案详解,以及其他一些大厂面试题目

八年CRUD,疫情备战三个月,三面头条、四面阿里拿offer面经分享

八年CRUD,疫情备战三个月,三面头条、四面阿里拿offer面经分享

力方向,就看自己的领导或公司里技术强的人在学什么。

  • 知道努力方向后不知道该怎么学,就到处去找相关资料然后练习。
  • 学习以后不知道有没有学成,则可以通过面试去检验。

我个人觉得面试也像是一场全新的征程,失败和胜利都是平常之事。所以,劝各位不要因为面试失败而灰心、丧失斗志。也不要因为面试通过而沾沾自喜,等待你的将是更美好的未来,继续加油!

以上面试专题的答小编案整理成面试文档了,文档里有答案详解,以及其他一些大厂面试题目

[外链图片转存中…(img-J2ohyBPY-1719189784717)]

[外链图片转存中…(img-b9pJp4CG-1719189784718)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值