专栏名称: 鸭哥聊Java
回复关键字:666 ,领取免费简历模板,Java面试题,Java编程视频等。本号内容涵盖Java源码,JVM源码,Dubbo源码,Spring源码,Spring Cloud微服务架构,分布式高并发架构技术,MySQL性能调优等。
目录
相关文章推荐
高校人才网V  ·  深圳市属事业单位多岗诚聘,享政府补助36万/人 ·  2 天前  
青塔  ·  一科学技术奖,公布 ·  6 天前  
51好读  ›  专栏  ›  鸭哥聊Java

都2025了,居然有公司强制18点20下班,禁止加班。。。

鸭哥聊Java  · 公众号  ·  · 2025-03-12 11:22

正文

美的“强制18:20下班”冲上热搜,这种“被迫准时下班”的操作,属实让打工人羡慕了。毕竟,多少公司嘴上喊着“反内卷”,实际还是默认加班文化,美的这次直接硬刚,倒是让人眼前一亮。

官方回应得很积极,严禁下班时间开会,反对形式主义加班,甚至“老板催着关灯下班”。但网友们的态度却不一,有人觉得是企业文化的进步,也有人怀疑是降低成本,避免加班费支出。

不只是美的,大疆也开始强制21点下班,海尔则更狠,直接实行强制双休,周六不准来公司,连食堂都关门,想加班?得提前一周申请。相比过去互联网大厂的“自愿加班”,这些举措确实是个好信号。

但真正的“反内卷”,不只是让员工早点走,而是提高效率,减少无效会议,优化工作方式。如果只是换个姿势继续卷,那也只是形式主义罢了 【备注:文末可领最新资料】

今日算法题


好了,我们今天看一道经典的算法题: 回文子串 ,这道题其实不难理解,就是找出字符串中所有的回文子串,并统计它们的个数。回文的意思就是,正着读和反着读都一样,比如 "aba" "aa" 这种,而子串要求是连续的,不能像子序列那样跳着选。

那么问题来了,我们怎么高效地找出所有的回文子串呢?

最暴力的方法当然是遍历所有的子串,然后检查它是不是回文。这种方法的时间复杂度是 (O(n^3)) 的,因为:

  1. 枚举所有的子串,起点 (i) 可以从 0 到 (n-1),终点 (j) 可以从 (i) 到 (n-1),这样就有 (O(n^2)) 级别的子串需要检查。
  2. 对于每个子串,判断它是不是回文需要 (O(n)) 的时间。

这样的复杂度,在字符串长度稍微大一点时就会超时,所以肯定得优化。

优化的方法有两个:

  1. 动态规划 (DP):使用一个二维数组 dp[i][j] 表示从 i j 这一段是不是回文。通过递推公式 dp[i][j] = (s[i] == s[j] && dp[i+1][j-1]) 来优化判断过程,时间复杂度降到了 (O(n^2))。
  2. 中心扩展 (Expand Around Center):回文的中心可以是一个字符(奇数长度的回文),也可以是两个字符(偶数长度的回文)。我们遍历每个位置,把它当成回文中心,往两边扩展,找到所有可能的回文,时间复杂度也是 (O(n^2)),但空间复杂度更低。

Java 代码实现

这里选择 中心扩展 的方法,因为它更简单,空间复杂度只有 (O(1)):

class Solution {
    public int countSubstrings(String s) {
        int n = s.length();
        int count = 0;

        for (int i = 0; i             count += expandFromCenter(s, i, i);   // 以单个字符为中心
            count += expandFromCenter(s, i, i+1); // 以两个字符为中心
        }

        return count;
    }

    private int expandFromCenter(String s, int left, int right) {
        int count = 0;
        while (left >= 0 && right             count++;
            left--;
            right++;
        }
        return count;
    }
}

代码解析:

  • countSubstrings 方法遍历字符串中的每个字符,并把它作为回文的中心点。
  • expandFromCenter 这个辅助方法从中心点出发,向两边扩展,直到不是回文为止,每找到一个回文就增加计数。
  • 需要注意的是,回文的中心可能是一个字符(如 "aba" ),也可能是两个字符(如 "abba" ),所以要分别考虑 expandFromCenter(s, i, i) expandFromCenter(s, i, i+1) 两种情况。






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