专栏名称: 鸭哥聊Java
回复关键字:666 ,领取免费简历模板,Java面试题,Java编程视频等。本号内容涵盖Java源码,JVM源码,Dubbo源码,Spring源码,Spring Cloud微服务架构,分布式高并发架构技术,MySQL性能调优等。
目录
相关文章推荐
壹读  ·  瑞幸喜茶们,“放过”直男吧 ·  2 天前  
字母榜  ·  小鹏和滴滴,还有下次吗? ·  昨天  
字母榜  ·  小鹏和滴滴,还有下次吗? ·  昨天  
汽车金融大全APP  ·  3 月 28 日万里行杭州站,超 20 ... ·  2 天前  
单向街书店  ·  在旅行中找到鲜活的心|年度旅行写作提名 ·  3 天前  
车买买  ·  瓦罐迷狂喜!全新奥迪A6 ... ·  3 天前  
51好读  ›  专栏  ›  鸭哥聊Java

离大谱,离职后被前公司调查去向。。。

鸭哥聊Java  · 公众号  ·  · 2025-03-14 10:24

正文

我刷到一个帖子,说有家公司在调查离职员工的去向,甚至还直接让人发新公司的名字过去。这要是搁我身上,第一反应肯定是:你谁啊?凭啥查我?

底下网友的回复真是一个比一个秀,有人直接甩出“税务局、经侦、劳动监察大队”几个关键词,意思就是——你查我?我还想查查你呢。还有人幽默回应:“目前我在排查前公司老板的私人资产。”这回复绝对满分,既有梗又精准打击。

但说正经的,离职后去哪儿是个人隐私,公司没有权力调查。除非涉及竞业协议或者法律问题,否则你完全可以不理会。如果真的遇到这类情况,最好的方式就是直接忽略或者拉黑,毕竟多说无益。

有些公司可能是出于“防范跳槽到竞对”的考虑,但这种做法不仅让人不适,还有侵犯个人隐私的嫌疑。员工离职后去哪儿,是自己的选择,不欠前公司一个交代。与其调查前员工去向,不如反思公司为何留不住人,这才是正道 【备注:文末可领最新资料】

今日算法题


好了,我们回归正题,我们来看一道算法题: 解码方法 II (Decode Ways II) ,这个问题 我们需要计算给定编码字符串 s 的解码方法总数,其中 '*' 可能表示 '1' '9' 之间的任意数字。

解题思路

这个问题可以使用 动态规划(Dynamic Programming, DP) 解决,定义 dp[i] 为长度为 i 的前缀子串的解码方法数。由于 dp[i] 只与 dp[i-1] dp[i-2] 有关,因此可以使用 滚动数组优化 ,只存储最近两个状态,减少空间复杂度。

状态转移方程

我们主要考虑 单字符解码 双字符解码 两种情况:

  1. 单字符解码 s[i-1] ):

  • '*' 可表示 '1' '9' ,有 9 种可能性。
  • 数字 '1' '9' 只能表示它自己,只有 1 种可能性。
  • '0' 无法单独解码,贡献 0。
  • 双字符解码 s[i-2]s[i-1] ):

    • "1X" X '0' '9' )有效,1 种情况。
    • "2X" X '0' '6' )有效,1 种情况。
    • "**" 可以是 "11" "19" "21" "26" ,共 15 种情况。
    • '*' + 数字 需要考虑 '1*' '2*' 的范围。
    • '*' 开头的情况:
    • 数字开头的情况:

    最终我们取 10^9 + 7 取模,防止溢出。

    Java 代码

    class Solution {
        public int numDecodings(String s) {
            int MOD = 1_000_000_007;
            int n = s.length();
            
            // 用两个变量代替 dp 数组
            long prev2 = 1// 空串的解码方式
            long prev1 = countSingle(s.charAt(0)); // 单个字符解码方式

            if (n == 1return (int) prev1; // 只有一个字符时直接返回

            for (int i = 1; i             long current = (prev1 * countSingle(s.charAt(i)) + prev2 * countDouble(s.charAt(i - 1), s.charAt(i))) % MOD;
                prev2 = prev1;
                prev1 = current;
            }
            return (int) prev1;
        }

        // 计算单字符解码的情况
        private int countSingle(char ch) {
            if (ch == '*'return 9// '*' 代表 '1'-'9'
            if (ch == '0'return 0// '0' 不能单独解码
            return 1






    请到「今天看啥」查看全文