被公司辞退了,领到了22万补偿金。结果就在准备入职下一家公司时,原公司HR电话叫我回去上班,涨薪7000,但是要把赔偿金还回去。
今天看到一个网友吐槽的故事,简直让我有点哭笑不得。
这位网友本来被公司辞退了,拿了22万的补偿金,准备重新找工作。结果正在和下一家公司对接时,突然接到原公司HR的电话,要求他回去上班,而且还涨薪了7000元!看上去是个“天上掉馅饼”的好事,可HR的条件是——必须把已经拿到的赔偿金还回去。
不过,有网友提醒得很到位:小心啊,回去之后签了新合同,如果之后公司再裁你,那就没赔偿金了!一旦重新签约,那可是全新的劳动合同,之前的裁员赔偿就不再适用了。
大家都知道,职场水深,千万不要因为一时的薪资诱惑就做出冲动决定。
果然,职场就像调试代码,稍不留意就会被“bug”给搞了!😂【备注:文末可领最新资料】。
算法题:找到所有好字符串
今天我们聊聊一个算法题——找到所有好字符串。
题目分析:
题目要求我们找到“好字符串”,你可能会想,这个“好字符串”是个什么东西?其实,它指的是满足某些条件的字符串。而这些条件,题目中会给出。
假设题目中有一个字符串 s,它由一些字符组成,且我们还可以从另一个字符集里面选择字符来扩展这个字符串。然后题目会给出一个具体的条件,比如“某些字符不能重复出现”或者“某些字符需要出现在字符串的前面”,类似这样的条件。
对于这个问题的解决,我们需要去遍历所有可能的子串,并检查它们是否符合条件。这就涉及到一个很常见的问题——如何快速找出符合条件的所有子串。
问题的难点:
字符组合问题:如果字符串很长,直接枚举所有子串的复杂度是非常高的,尤其是涉及到去重或者一些其他复杂条件时,效率就更低了。我们必须要在算法上做一些优化,避免暴力破解。
条件判断:不同的题目,条件各不相同,我们的判断标准也得根据题目要求来调整。比如,有些题目要求子串不能有重复字符,可能需要使用哈希表来快速判断。
解决思路:
为了更高效地解决这个问题,我们可以借助一些常见的算法技巧,比如滑动窗口、哈希表等等。下面我给大家介绍一个我自己用的比较简单直接的思路。
首先,我们可以通过双指针来优化子串的查找。一个指针从头开始遍历字符串,另一个指针则标记当前窗口的右端。每当右指针扩展到新的字符时,我们就检查当前窗口是否符合条件。如果符合条件,就将这个子串加入结果集。
接下来,来看个具体的代码实现:
import java.util.HashSet;
import java.util.Set;public class Solution {
public int countGoodSubstrings(String s) {
int n = s.length();
int result = 0;
// 滑动窗口的左右指针
int left = 0;
Set<Character> seen = new HashSet<>();
for (int right = 0; right < n; right++) {
// 如果当前字符已经在窗口内,则滑动左指针
while (seen.contains(s.charAt(right))) {
seen.remove(s.charAt(left));
left++;
}
// 加入当前字符
seen.add(s.charAt(right));
// 当前窗口内的子串都是合法的
result += (right - left + 1);
}
return result;
}
}
解释一下代码:
我们使用了一个滑动窗口的技巧, left和right分别是窗口的左右边界,seen是用来存储当前窗口内字符的集合。每次右指针 right向右扩展时,我们就检查当前字符是否已经出现在seen中,如果出现了,就说明当前窗口不符合条件,这时需要移动左指针left,直到窗口内没有重复字符为止。如果没有重复字符,那么就说明当前窗口中的所有子串都符合条件,我们可以直接将它们计入结果。
这段代码的时间复杂度是 O(n),其中 n 是字符串的长度。因为我们每个字符最多只会被访问两次(一次是右指针扩展,另一次是左指针移动),所以效率还是蛮高的。
遇到的坑:
重复字符处理:在使用滑动窗口时,要特别注意重复字符的处理。比如,我们可以使用
HashSet来确保每个字符在窗口内唯一,但要特别小心当左指针需要移动时,如何保证我们能正确删除已经离开窗口的字符。边界问题:有时我们在边界条件上容易犯错,像当
s为空字符串时,直接返回 0;另外如果s的长度非常小,也要处理好边界条件,避免数组越界。
总结:
这道题虽然看似简单,但却涉及到一些常见的字符串处理技巧,比如滑动窗口、哈希表、字符去重等等。如果我们能巧妙地利用这些技巧,能在O(n)的时间复杂度内解决问题,效率是非常高的。
最后,我为大家打造了一份deepseek的入门到精通教程,完全免费:https://www.songshuhezi.com/deepseek
也可以看我写的这篇文章《DeepSeek满血复活,直接起飞!》来进行本地搭建。
-END-