985本就业还是考研

就业 or 考研

就业还是考研,是前几年讨论得很多的话题。

但随着当年选择考研(并成功上岸)的同学陆续就业,发现根本不是「读完研后月薪涨多涨少」的问题,而是「当年那些大量招聘的公司,现在 HC 还有没有」的问题。

除了市面上 HC 数量不如读研前(就业竞争更加激烈)以外,更加刺痛选择读研同学的是,即使找到了工作,入职后的 mentor 可能就是当年本科毕业后选择就业的同届小伙伴 🤣🤣🤣

渐渐地,大家发现:所谓的「考研上岸」根本不是真正意义上的上岸,「考公上岸」才是。

但哪又有这么多的体制内岗位呢?

于是肉眼可见的,这两年的"考研热"开始降温:

虽然时代趋势如此,但将其生硬的套在个人身上,也不完全合适。

因此,时常还是会有同学会在网上发问,自己的情况,是适合考研,还是适合就业。希望有过来人能够帮忙分析一下。

这次发帖的小伙伴,是哈工大大三学生,当前学分绩处于保研的边缘,同时感觉自己在技术上的积累比较单薄。楼主之前在网上有听过"行情越差学历越重要"的说法,加上家里的思维相对传统,认为读个 985 不读硕蛮亏的。于是发起了「准备就业 or 准备考研」的投票,希望网友们给给意见。

其实从楼主的文字描述来看,自己内心是比较倾向于「考研」,但投票结果压倒性地倾向「就业」一方。

虽然参与投票的人不少,有两百多号人,但有在评论区给出分析意见的,一个没有,留言人数不足 20 个,几乎都是简单一两句话的那种。

如果你问我,我会建议「准备就业」,理由就是前面说的。目前看来,考研性价比不高,不是所有人都能进入体制内,将就业时间后移,不确定性只会更大。

对此,你怎么看?你会投「就业」还是「考研」?理由是什么?欢迎评论区交流。

...

回归主题。

周末,来一道简单算法题。

题目描述

平台:LeetCode

题号:929

每个有效电子邮件地址都由一个本地名和一个 域名组成,以 '@' 符号分隔。除小写字母之外,电子邮件地址还可以含有一个或多个 '.''+'

  • 例如,在 alice@leetcode.com 中, alice 是本地名,而 leetcode.com 是域名。

如果在电子邮件地址的本地名部分中的某些字符之间添加句点('.'),则发往那里的邮件将会转发到本地名中没有点的同一地址。请注意,此规则不适用于域名。

  • 例如,"alice.z@leetcode.com""alicez@leetcode.com" 会转发到同一电子邮件地址。

如果在本地名中添加加号('+'),则会忽略第一个加号后面的所有内容。这允许过滤某些电子邮件。同样,此规则不适用于域名。

  • 例如 m.y+name@email.com 将转发到 my@email.com

可以同时使用这两个规则。

给你一个字符串数组 emails,我们会向每个 emails[i] 发送一封电子邮件。返回实际收到邮件的不同地址数目。

示例 1:

perl 复制代码
输入:emails = ["test.email+alex@leetcode.com","test.e.mail+bob.cathy@leetcode.com","testemail+david@lee.tcode.com"]

输出:2

解释:实际收到邮件的是 "testemail@leetcode.com" 和 "testemail@lee.tcode.com"。

示例 2:

perl 复制代码
输入:emails = ["a@leetcode.com","b@leetcode.com","c@leetcode.com"]

输出:3

提示:

  • <math xmlns="http://www.w3.org/1998/Math/MathML"> 1 < = e m a i l s . l e n g t h < = 100 1 <= emails.length <= 100 </math>1<=emails.length<=100
  • <math xmlns="http://www.w3.org/1998/Math/MathML"> 1 < = e m a i l s [ i ] . l e n g t h < = 100 1 <= emails[i].length <= 100 </math>1<=emails[i].length <=100
  • emails[i] 由小写英文字母、'+''.''@' 组成
  • 每个 emails[i] 都包含有且仅有一个 '@' 字符
  • 所有本地名和域名都不为空
  • 本地名不会以 '+' 字符作为开头

模拟

纯纯模拟题,优雅与否主要看代码能力。

Java 代码:

Java 复制代码
class Solution {
    public int numUniqueEmails(String[] emails) {
        Set<String> set = new HashSet<>();
        for (String s : emails) {
            StringBuilder sb = new StringBuilder();
            int n = s.length(), i = 0;
            boolean ok = true;
            while (i < n) {
                char c = s.charAt(i);
                if (c == '@') break;
                if (c == '.' && ++i >= 0) continue;
                if (c == '+') ok = false;
                if (ok) sb.append(c);
                i++;
            }
            set.add(sb.append(s.substring(i)).toString());
        }
        return set.size();
    }
}

C++ 代码:

C++ 复制代码
class Solution {
public:
    int numUniqueEmails(vector<string>& emails) {
        unordered_set<string> set;
        for (string& s : emails) {
            string sb;
            int n = s.length(), i = 0;
            bool ok = true;
            while (i < n) {
                char c = s[i];
                if (c == '@') break;
                if (c == '.' && ++i >= 0) continue;
                if (c == '+') ok = false;
                if (ok) sb += c;
                i++;
            }
            set.insert(sb + s.substr(i));
        }
        return set.size(); 
    }
};

Python 代码:

Python 复制代码
class Solution:
    def numUniqueEmails(self, emails: List[str]) -> int:
        sset = set()
        for s in emails:
            sb = ""
            ok = True
            for i, c in enumerate(s):
                if c == '@': break
                if c == '.' and i + 1 < len(s): continue
                if c == '+': ok = False
                if ok: sb += c
            sset.add(sb + s[i:])
        return len(sset)

TypeScript 代码:

TypeScript 复制代码
function numUniqueEmails(emails: string[]): number {
    const set = new Set<string>();
    for (const s of emails) {
        let sb = "";
        let n = s.length, i = 0;
        let ok = true;
        while (i < n) {
            const c = s[i];
            if (c === '@') break;
            if (c === '.' && ++i >= 0) continue;
            if (c === '+') ok = false;
            if (ok) sb += c;
            i++;
        }
        set.add(sb + s.substring(i));
    }
    return set.size;
};
  • 时间复杂度: <math xmlns="http://www.w3.org/1998/Math/MathML"> O ( ∑ i = 0 n − 1 l e n ( e m a i l s [ i ] ) ) O(\sum_{i = 0}^{n - 1} len(emails[i])) </math>O(∑i=0n−1len(emails[i]))
  • 空间复杂度: <math xmlns="http://www.w3.org/1998/Math/MathML"> O ( ∑ i = 0 n − 1 l e n ( e m a i l s [ i ] ) ) O(\sum_{i = 0}^{n - 1} len(emails[i])) </math>O(∑i=0n−1len(emails[i]))
相关推荐
SomeB1oody15 分钟前
【Rust自学】11.3. 自定义错误信息
开发语言·后端·rust
SomeB1oody22 分钟前
【Rust自学】11.6. 控制测试运行:并行和串行(连续执行)测试
开发语言·后端·rust
Burt1 小时前
开源项目常用工具对比:(二)lint-staged VS nano-staged
前端·github
Q_27437851091 小时前
django基于Python的电影推荐系统
java·后端·python·django
不吃香菜mm1 小时前
Vue方法、计算机属性及侦听器
前端·javascript·vue.js
ZERO空白1 小时前
spring task使用
java·后端·spring
nuIl1 小时前
VSCode 架构分析:依赖注入和组件
前端·javascript·架构
潜洋2 小时前
Spring Boot教程之五十五:Spring Boot Kafka 消费者示例
spring boot·后端·kafka
疯狂的沙粒2 小时前
HTML和CSS相关的问题,为什么页面加载速度慢?
前端·css·html
远洋录2 小时前
Vue 开发者的 React 实战指南:组件设计模式篇
前端·人工智能·react