有个大厂员工说得挺实在:现在出去谈薪,能在原基础上加个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) 。这题不难,难的是别把简单题写成一锅浆糊。字符串题很多都是这样,规则一旦和“尾部对齐”有关,先试试倒着做,往往比正着硬拧舒服得多。
热门跟贴