网易首页 > 网易号 > 正文 申请入驻

现在背调手段越来越高明了。

0
分享至

专栏:50多种数据结构彻底征服

专栏:50多种经典图论算法全部掌握

最近一网友在入职之前遇到公司背调,问的还那么详细,关键被问的人还那么配合。我觉得招一个产品经理不至于,又不是啥高管。之前我找工作的时候也遇到过背调,不过查的是社保记录,主要是判断工作履历是否真实,是否真的在那家公司干过,个人能力是查不到的。

背调现在也是屡见不鲜,之前有一个同事离职之后空闲了半年多,背调的时候填我的手机号,临时给我打电话告诉我该怎么说,结果不到10分钟hr真打过来了,其实这种背调就是往好的夸,最后也成功入职,所以大家在工作中最好要有一个玩的特别好的同事,以后找工作遇到背调可以帮你说两句。但有的人离职是因为和领导关系搞的不好,有的背调公司要填领导的联系方式,这种背调就很坑了。

--------------下面是今天的算法题--------------

来看下今天的算法题,这题是LeetCode的第5题:最长回文子串。

问题描述

来源:LeetCode第5题

难度:中等

给你一个字符串 s,找到 s 中最长的回文子串。如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。

示例1:


输入:s = "babad" 输出:"bab" 解释:"aba" 同样是符合题意的答案。

示例2:


输入:s = "cbbd" 输出:"bb"

  • 1 <= s.length <= 1000

  • s 仅由数字和英文字母组成

问题分析

这题是让找出字符串 s 的最长回文子串, 最简单的一种解决方式就是截取字符串 s 的所有子串 ,然后判断它的所有子串哪些是回文串,保存最长的回文串即可,这种解法虽然简单,但时间复杂度比较高。

还一种解决方式就是中心扩散法 ,我们需要以每一个字符为中心往两边扩散,查找并记录最长的回文子串。查找完之后下一步我们还要以下一个字符为中心往两边扩散进行查找,这样效率也不是很高。这个时候我们可以对他进行优化,使用马拉车算法。

所以这题的最经典解法还是 马拉车算法 ,关于马拉车算法大家可以看下 中第 13 章的13.2 马拉车算法,这里就不在介绍。我们这里主要讲另外一种解决方式,动态规划。

我们定义二维数组dp[][],如果dp[left][right]为true,则表示子串s[left,right]是回文子串,如果dp[left][right]为false,则表示子串s[left,right]不是回文子串。

如果dp[left][right]是回文子串,首先dp[left+1][right-1]必须是回文子串,并且s[left]和s[right]也必须相等,如下图所示。

1,如果s[left]!=s[right],子串s[left,right]不可能是回文子串。

2,如果s[left]==s[right],子串s[left,right]能不能构成回文子串还需要进一步判断:

2.1,如果left==right,也就是说只有一个字符,我们认为它是回文子串。即dp[left][right]=true(left==right)

2.2,如果right-left<=2,类似于"aa",或者"aba",中间最多只有一个字符,我们也认为它是回文子串,即dp[left][right]=true(right-left<=2)

2.3,如果right-left>2,需要判断dp[left+1][right-1]是否是回文子串,才能确定dp[left][right]是否为true还是false。即dp[left][right]=dp[left+1][right-1]

所以我们可以找出递推公式如下:

dp[left][right]=s[left]==s.[right]&&dp[left+1][right-1]

这里要注意,因为dp[left][right]的值要依赖dp[left+1][right-1]的值,所以不能从上到下一行一行的遍历。因为在二维网格中dp[left+1][right-1]是在dp[left][right]的下一行,所以必须先计算dp[left+1][right-1]的值,才能计算dp[left][right]。

遍历方式有多种,可以从左到右一列一列的遍历,也可以从下到上一行一行的遍历,还可以从对角线往右上角一行一行的遍历, 无论哪种方式,都要保证在计算dp[left][right]的时候,dp[left+1][right-1]的值一定是计算过的 。

JAVA:

public String longestPalindrome(String s) {
// start表示最长回文子串开始的位置,为了后面截取。
// maxLen表示最长回文子串的长度
int start = 0, maxLen = 1;
int length = s.length();
boolean[][] dp = new boolean[length][length];
for (int right = 1; right < length; right++) {
for (int left = 0; left < right; left++) {
// 如果两种字符不相同,肯定不能构成回文子串。
if (s.charAt(left) != s.charAt(right))
continue;
// 下面是s[left]和s[right]两个字符相同情况下的判断。
if (right - left <= 2) {
// 类似于"a","aa"和"aba",也是回文子串。
dp[left][right] = true;
} else {
// 类似于"a******a",要判断他是否是回文子串,只需要
// 判断"******"是否是回文子串即可。
dp[left][right] = dp[left + 1][right - 1];
}
// 如果字符串从left到right是回文子串,保存最长的回文子串。
if (dp[left][right] && right - left + 1 > maxLen) {
maxLen = right - left + 1;
start = left;
}
}
}
// 截取最长的回文子串
return s.substring(start, start + maxLen);
}

C++:

public:
string longestPalindrome(string s) {
// start表示最长回文子串开始的位置,为了后面截取。
// maxLen表示最长回文子串的长度
int start = 0, maxLen = 1;
int length = s.size();
vector int>> dp(length, vector< int>(length));
for ( int right = 1; right < length; right++) {
for ( int left = 0; left < right; left++) {
// 如果两种字符不相同,肯定不能构成回文子串。
if (s[left] != s[right])
continue;
// 下面是s[left]和s[right]两个字符相同情况下的判断。
if (right - left <= 2) {
// 类似于"a","aa"和"aba",也是回文子串。
dp[left][right] = true;
} else {
// 类似于"a******a",要判断他是否是回文子串,只需要
// 判断"******"是否是回文子串即可。
dp[left][right] = dp[left + 1][right - 1];
}
// 如果字符串从left到right是回文子串,保存最长的回文子串。
if (dp[left][right] && right - left + 1 > maxLen) {
maxLen = right - left + 1;
start = left;
}
}
}
// 截取最长的回文子串
return s.substr(start, maxLen);
}

笔者简介

博哥,真名:王一博,毕业十多年, 作者,专注于 数据结构和算法 的讲解,在全球30多个算法网站中累计做题2000多道,在公众号中写算法题解800多题,对算法题有自己独特的解题思路和解题技巧,喜欢的可以给个关注,也可以 下载我整理的1000多页的PDF算法文档 。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
娃哈哈换“姓”了!宗馥莉另立门户,为让三个私生子彻底翻不了身

娃哈哈换“姓”了!宗馥莉另立门户,为让三个私生子彻底翻不了身

天天热点见闻
2026-06-08 03:19:57
苹果 2027 将发布 6 款 iPhone 手机

苹果 2027 将发布 6 款 iPhone 手机

简科技
2026-06-21 12:37:53
突发,大利好!AI算力爆发!MLCC,下周或迎超级大周期(附股)

突发,大利好!AI算力爆发!MLCC,下周或迎超级大周期(附股)

侃故事的阿庆
2026-06-21 07:34:55
端午新闻联播主播穿搭引网友热议

端午新闻联播主播穿搭引网友热议

小椰的奶奶
2026-06-20 11:05:21
日本保就业的代价有多惨痛?为了5%失业率,牺牲了整整一代人

日本保就业的代价有多惨痛?为了5%失业率,牺牲了整整一代人

齐天候
2026-06-17 17:51:07
水煮蛋再次被点名!多名院士发现:常吃水煮蛋的老人,有7个好处

水煮蛋再次被点名!多名院士发现:常吃水煮蛋的老人,有7个好处

岐黄传人孙大夫
2026-06-21 16:35:06
赚再多钱有何用?42岁贾乃亮如今的现状,给所有中年男人敲响警钟

赚再多钱有何用?42岁贾乃亮如今的现状,给所有中年男人敲响警钟

翰飞观事
2026-06-21 16:42:20
大批律师陷入生存困境,律所照搬保险代理人模式是核心症结

大批律师陷入生存困境,律所照搬保险代理人模式是核心症结

生活新鲜市
2026-06-19 08:26:31
日系车为什么会没落?不是输给了电动车,而是输给了自己30年的成功

日系车为什么会没落?不是输给了电动车,而是输给了自己30年的成功

三农老历
2026-06-20 12:05:39
高级人民法院以违背公共利益为由裁定不予执行仲裁裁决,为何被最高人民法院撤销?

高级人民法院以违背公共利益为由裁定不予执行仲裁裁决,为何被最高人民法院撤销?

法客帝国
2026-06-14 21:08:17
厨房3种调料正在悄悄变毒致癌!90%家庭天天用错,看完赶紧改

厨房3种调料正在悄悄变毒致癌!90%家庭天天用错,看完赶紧改

三农老历
2026-06-21 15:35:52
27次上春晚的她,58岁仍未婚!陪她27年的那个男人,早已超越夫妻

27次上春晚的她,58岁仍未婚!陪她27年的那个男人,早已超越夫妻

飘飘然的娱乐汇
2026-06-19 22:05:03
恭喜!CBA顶级后卫!休赛期第一笔顶薪合同

恭喜!CBA顶级后卫!休赛期第一笔顶薪合同

篮球实战宝典
2026-06-21 17:50:27
白百何出门秀身材结果被热傻,还怀疑自己出虚汗,太真实了

白百何出门秀身材结果被热傻,还怀疑自己出虚汗,太真实了

西楼知趣杂谈
2026-06-04 10:18:02
山西肉铺伤人后续:又杀害两名顾客,3人当场死亡,家属曝隐情

山西肉铺伤人后续:又杀害两名顾客,3人当场死亡,家属曝隐情

离离言几许
2026-06-16 20:59:36
樊振东回来了!公开亮相新身份,技术创新成新看点!

樊振东回来了!公开亮相新身份,技术创新成新看点!

暖心萌阿菇凉
2026-06-20 16:40:03
委内瑞拉换天五个月后才发现:百姓购买力爆发,国家回血速度加快

委内瑞拉换天五个月后才发现:百姓购买力爆发,国家回血速度加快

掉了颗大白兔糖
2026-06-09 04:30:53
洪秀柱直言敲醒:不愿扛起统一大旗,何必身居国民党主席之位?

洪秀柱直言敲醒:不愿扛起统一大旗,何必身居国民党主席之位?

呼呼历史论
2026-06-21 12:36:35
境外势力猖獗黑产升级,中国人被明码标价,交赎金都救不回来!

境外势力猖獗黑产升级,中国人被明码标价,交赎金都救不回来!

有牙的兔纸
2026-06-17 17:54:34
高市大闹G7峰会,说自己遭遇中国管制霸凌,生产线停了好几条!

高市大闹G7峰会,说自己遭遇中国管制霸凌,生产线停了好几条!

李子橱
2026-06-21 17:05:09
2026-06-21 18:08:49
数据结构和算法
数据结构和算法
专门介绍和写算法题解的号
273文章数 4关注度
往期回顾 全部

头条要闻

特朗普持续抨击梅洛尼:美伊停战后 她又想"重修旧好"

头条要闻

特朗普持续抨击梅洛尼:美伊停战后 她又想"重修旧好"

体育要闻

47岁的马宁,终于奔跑在世界杯赛场

娱乐要闻

李乃文带妻子法国购物,2人5个孩子!

财经要闻

蔚来的“暗战”时刻

科技要闻

马斯克拿下7800亿元天价薪酬 2028年可兑现

汽车要闻

惊出冷汗!重庆实测奥迪A5L,华为智驾这波操作绝了…

态度原创

数码
健康
亲子
游戏
旅游

数码要闻

英特尔与AMD推出ACE扩展:为x86架构加入AI指令集

吃粽子的3条保胃法则,消化科医生推荐

亲子要闻

纸尿裤全面失控!举报人再拿重磅铁证,真相恐不只是婴儿生殖受损

传闻:索尼或考虑推迟PS6发售 原定2027年上市

旅游要闻

济宁奎星湖化身“天空之镜” 湖心藏着古人400多年的心愿

无障碍浏览 进入关怀版