有个大厂员工说得挺实在:现在出去谈薪,能在原基础上加个10%到15%,已经算正常发挥;能摸到20%,差不多就该收手了。

打开网易新闻 查看精彩图片

评论区也挺真实。有人说现在就是买方市场,岗位少,简历多,公司根本不缺人。还有人更扎心,说你要是履历不稳,或者空窗拖太久,别说涨薪了,平薪能接住都算运气。

这话难听,但真不是吓人。行情松的时候,大家拼命抬价;行情紧的时候,企业第一反应就是先挑“便宜、稳、来了就能干”的。

现在跳槽,核心不是敢不敢开价,是你值不值那个价。先看看自己手里到底有啥,再开口,不然一圈面下来,人先整焦虑了。

算法题

这题看着像字符串处理,真写起来最容易翻车的地方反而不是大小写转换,而是 你到底从哪边开始分组

很多人第一反应是从左往右扫,攒满 k 个字符就切一刀。代码能写出来,但一遇到首组长度不固定,或者原串里夹着一堆 - ,逻辑就开始拧巴。像这种题,我一般不太信“顺手正着扫”这套,尤其是分组规则明显是 尾部固定 的时候,直接从后往前处理,脑子是省事的。

题目说得很直白:去掉原字符串里的短横线,把字母转成大写,再按每组 k 个字符重新插入 - 。除了第一组可以短一点,后面的组都必须正好 k 个。

先看个例子:

s = "5F3Z-2e-9-w", k = 4

去掉横线后其实就是:

5F3Z2E9W

然后从后往前每 4 个一组:

5F3Z-2E9W

这题真正该盯住的就两件事:

第一, - 不参与分组。 第二,分组是从后往前对齐,不是从前往后凑。

我更喜欢这么写,先倒着扫,边扫边格式化:

这段代码有个好处,处理过程很顺。 倒序遍历。 遇到 - 直接跳过。 当前组满了 k 个,就先补一个分隔符。 最后整体反转回来。

有同学会问,为什么不用 Character.toUpperCase ?当然能用,我这里单独写个 toUpper ,只是想把控制感拿回来。做题时我不太喜欢把这种小动作全丢给库函数,尤其是这种只处理英文大小写的场景,自己写一眼就知道边界在哪。

再说一个常见 bug。

有些写法会在每次追加字符后都判断是不是要加 - ,最后很容易在字符串头部多塞一个横线,收尾时还得再删。这个味道我不太喜欢,说明逻辑本身别扭了。像上面这样, 满组前插分隔符 ,比“事后补救”干净得多。

时间复杂度是 O(n) ,空间复杂度也是 O(n) 。这题不难,难的是别把简单题写成一锅浆糊。字符串题很多都是这样,规则一旦和“尾部对齐”有关,先试试倒着做,往往比正着硬拧舒服得多。