从炫富风波到算法难题,今日热点一网打尽!,“坑夫式炫富”再现,大厂员工命运因女友改变!

本文先讲述了游戏大厂员工因女友炫富被裁的事件,还提及类似“坑夫式炫富”案例,接着引入了LeetCode第139题“单词拆分”的算法题,详细介绍了题目内容和问题分析,并给出了Java和C++的代码实现。

近期,网络上一则新闻引起了广泛关注。有一位游戏大厂员工的女友,在网上发文大肆炫耀自己的未婚夫。据她所说,未婚夫在2024年的年薪成功突破了300万。在不久前她过生日的时候,未婚夫更是直接给她转了4万作为零花钱,还在广州购置了一套大平层。原本两人打算在今年十一举行婚礼,然而命运却在此处转折。该员工被同一家公司的其他员工发现了女友的炫富行为,并进行了举报,最终这名员工被公司裁掉。

事实上,这种“坑夫式炫富”的情况并非个例。早在2022年,中金交易员的妻子晒出了丈夫8.25万的月薪单,这一行为直接引发了金融圈的薪酬整顿风暴,导致全行业人均薪资缩水了20%。通常来说,互联网公司对于薪资是有保密要求的,有些公司甚至会和员工签订保密协议,明确规定薪资不能向外人透露。不过,仅仅因为女友炫富就被裁掉,很多人可能会觉得有些不可思议,想必背后还有其他深层次的原因。

从炫富风波到算法难题,今日热点一网打尽!,“坑夫式炫富”再现,大厂员工命运因女友改变!

从炫富风波到算法难题,今日热点一网打尽!,“坑夫式炫富”再现,大厂员工命运因女友改变!

从炫富风波到算法难题,今日热点一网打尽!,“坑夫式炫富”再现,大厂员工命运因女友改变!

从炫富风波到算法难题,今日热点一网打尽!,“坑夫式炫富”再现,大厂员工命运因女友改变!

从炫富风波到算法难题,今日热点一网打尽!,“坑夫式炫富”再现,大厂员工命运因女友改变!

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

接下来,让我们一起来看今天的算法题,这道题来自LeetCode的第139题:单词拆分。

问题描述

来源:LeetCode第139题,难度:中等

题目给出一个字符串 s 和一个字符串列表 wordDict 作为字典。要求判断是否可以利用字典中出现的一个或多个单词拼接出字符串 s ,如果可以则返回 true。需要注意的是,不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。

示例1:

输入: s = "leetcode", wordDict = ["leet", "code"]

输出: true

解释: 返回 true 是因为 "leetcode" 可以由 "leet" 和 "code" 拼接而成。

示例2:

输入: s = "catsandog", wordDict = ["cats", "dog", "sand", "and", "cat"]

输出: false

同时,题目还有以下限制条件:

1 <= s.length <= 300

1 <= wordDict.length <= 1000

1 <= wordDict[i].length <= 20

s 和 wordDict[i] 仅由小写英文字母组成

wordDict 中的所有字符串 互不相同

问题分析

这道题要判断能否用字典中的字符串拼接成字符串 s ,实际上就是把字符串 s 拆分成一些子串,然后判断这些子串是否都存在于字典 wordDict 中。解决这道题的方法有很多种,比如动态规划、BFS(广度优先搜索)和 DFS(深度优先搜索),这里我们先来看动态规划的解决方法。

定义 dp[i] 表示字符串的前 i 个字符经过拆分是否都存在于字典 wordDict 中。如果要求 dp[i] 的值,需要往前截取 k 个字符,判断子串 [i - k + 1,i] 是否存在于字典 wordDict 中,并且前面子串 [0,i - k] 拆分的子串也都存在于 wordDict 中,如果都满足条件,说明字符串 s 的前 i 个字符可以拆分。

例如,要判断字符串“catsan”是否可以正常拆分,我们先截取前 6 个字符,判断它们是否存在于字典中,如果不存在,就依次截取 5 个、4 个……如果存在,还需要判断剩下的字符是否可以正常拆分。

从炫富风波到算法难题,今日热点一网打尽!,“坑夫式炫富”再现,大厂员工命运因女友改变!

JAVA代码实现:

public boolean wordBreak(String s, List wordDict) {    int len = s.length();    boolean[] dp = new boolean[len + 1];    dp[0] = true; // 空字符串,不需要字典中的字符串。    for (int i = 1; i <= len; i++) {        for (int j = 0; j < i; j++) {            // 把字符串分割为s[0,j - 1]和s[j,i]两部分,            // 这两部分必须都存在于字典中dp[i]才会返回true。            dp[i] = dp[j] && wordDict.contains(s.substring(j, i));            if (dp[i]) { // 只要有一种方式能够拆分成功,后面就不要尝试拆分了。                break;            }        }    }    return dp[len];}

C++代码实现:

public:    bool wordBreak(string s, vector& wordDict) {        size_t len = s.size();        vector dp(len + 1, false);        unordered_set wordSet(wordDict.begin(), wordDict.end());        dp[0] = true; // 空字符串,不需要字典中的字符串。        for (int i = 1; i <= len; i++) {            for (int j = 0; j < i; j++) {                // 把字符串分割为s[0,j - 1]和s[j,i]两部分,                // 这两部分必须都存在于字典中dp[i]才会返回true。                if (dp[j] && wordSet.find(s.substr(j, i - j)) != wordSet.end()) {                    dp[i] = true; // 只要有一种方式能够拆分成功,后面就不要尝试拆分了。                    break;                }            }        }        return dp[len];    }

本文先是讲述了游戏大厂员工因女友炫富被裁以及此前类似“坑夫式炫富”引发行业整顿的事件,反映了职场薪资保密的重要性。之后引入LeetCode第139题“单词拆分”算法题,详细介绍题目、分析问题并给出了Java和C++的代码实现,帮助读者理解解题思路。

原创文章,作者:购物狂魔,如若转载,请注明出处:https://www.gouwuzhinan.com/archives/42015.html

(0)
购物狂魔购物狂魔
上一篇 2025年3月23日
下一篇 2025年3月23日

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注