大家好,我是苍何。
在微信看一看刷到这个内容,觉得有必要就此和大家唠唠。
将楼主原文摘录下:
我本人是双非一本院校原来专业是农学大类听闻农学生就业不太好就抓紧转了专业为了转专业考到了专业前 5 放弃了入党保研和团支书身份一心想转走在选择转什么的时候觉得计算机又能考公又能就业就选择了它转完以后通过网上了解到计算机无论干什么都很卷,要是学电气法学什么的就好了感觉自己放弃那么多选择还是错误的这学期一点学习的心思都没有了每天都很颓废想去当初为了转专业如此决绝自己只觉得可惜。
要是换做十年前,我估计楼主不会发出这样的感慨,那是个人人转码的年代,只要你稍微会点编程,月薪过万不是梦。最关键,找工作太简单了,学校差点照样能进大厂。
很多人就是在那个风口转到了人生的第一桶金。
如今时代变了,计算机也变得越来越卷,计算机专业的找工作也难多了,也难怪楼主发出这样的感慨。
我也是转行过来人,扪心自问,不后悔,最大的原因,我觉得是源自于热爱吧。学计算机真的需要热爱,是那种你不顾一切的热爱。
我看到的当初能一起坚持下来的,大都出于热爱,也有很多相关博主,也是先基于热爱,比如我认识的二哥,鱼皮,都是满腔的热爱。
唯有热爱,可抵漫长岁月。
有网友说:
我小时候穷,长大了学计算机,我觉得程序员真的是很好的职业,简直是穷人在没有任何人脉关系和运气的情况下,最好的几个出路之一。至少能让我吃饱饭。
是啊,有时候想想,卷算什么?卷总比饿好吧?
我自己以前是天坑专业土木,工地的苦谁干谁知道,相对比而言,计算机工作环境那可真比工地好多了。
但你要问现在转行计算机还来的及吗?我建议是慎重考虑,因为大概率找不到什么好工作,要知道,现在外包都开始卷学历了,不可想象。
但在 AI 时代下,新的编程范式或许会到来,人人都会开发软件的时代也许会来临,至于你会不会编程已经没那么重要了,重要的是,思维模式和逻辑能力。
好啦,你如何看待计算机岗位?欢迎评论区讨论。
...
回归主题。
今天来一道简单算法题,给枯燥的牛马生活加加油😂。
题目描述
平台:LeetCode
题号:5
题目描述:最长回文子串
给定一个字符串 s
,找到 s
中最长的回文子串。
示例 1:
输入: s = "babad"
输出: "bab"
解释: "aba" 同样是符合题意的答案。
示例 2:
输入: s = "cbbd"
输出: "bb"
提示:
1 <= s.length <= 1000
s
仅由数字和英文字母组成。
解题思路
要找到字符串中的最长回文子串,可以使用中心扩展法。回文串的特点是左右对称,我们可以从每个可能的“中心”出发,向两边扩展,找出最长的回文子串。
中心扩展法的核心逻辑:
回文字符串可能有两种情况:
遍历每个字符及其间隙,尝试以该位置为中心扩展回文串。
在扩展过程中,记录当前最长的回文子串的起始和结束位置。
奇数长度,以一个字符为中心,比如
"aba"
。偶数长度,以两个字符为中心,比如
"bb"
。
算法步骤:
定义一个函数
expandAroundCenter(s, left, right)
,以给定的中心向两边扩展,找到最长的回文子串。遍历字符串
s
的每个可能的中心位置(包括字符和字符之间的间隙)。对每个中心位置,调用
expandAroundCenter
,记录最长的回文子串。最后,根据记录的起始和结束位置返回结果。
时间复杂度:O(n²),因为对于每个字符,都需要向两边扩展。
空间复杂度:O(1),只使用了常数空间。
代码实现
Java代码:
public class LongestPalindrome {
public String longestPalindrome(String s) {
if (s == null || s.length() < 1) return "";
int start = 0, end = 0;
for (int i = 0; i < s.length(); i++) {
int len1 = expandAroundCenter(s, i, i); // 奇数长度回文
int len2 = expandAroundCenter(s, i, i + 1); // 偶数长度回文
int len = Math.max(len1, len2);
if (len > end - start) {
start = i - (len - 1) / 2;
end = i + len / 2;
}
}
return s.substring(start, end + 1);
}
private int expandAroundCenter(String s, int left, int right) {
while (left >= 0 && right < s.length() && s.charAt(left) == s.charAt(right)) {
left--;
right++;
}
return right - left - 1; // 回文串的长度
}
}
C++代码:
#include <string>
using namespace std;
class Solution {
public:
string longestPalindrome(string s) {
if (s.empty()) return "";
int start = 0, end = 0;
for (int i = 0; i < s.size(); i++) {
int len1 = expandAroundCenter(s, i, i); // 奇数长度回文
int len2 = expandAroundCenter(s, i, i + 1); // 偶数长度回文
int len = max(len1, len2);
if (len > end - start) {
start = i - (len - 1) / 2;
end = i + len / 2;
}
}
return s.substr(start, end - start + 1);
}
private:
int expandAroundCenter(const string& s, int left, int right) {
while (left >= 0 && right < s.size() && s[left] == s[right]) {
left--;
right++;
}
return right - left - 1; // 回文串的长度
}
};
Python代码:
class Solution:
def longestPalindrome(self, s: str) -> str:
if not s or len(s) < 1:
return ""
def expandAroundCenter(s, left, right):
# 从中心扩展,返回最长回文串的长度
while left >= 0 and right < len(s) and s[left] == s[right]:
left -= 1
right += 1
return right - left - 1 # 回文串的长度
start, end = 0, 0
for i in range(len(s)):
len1 = expandAroundCenter(s, i, i) # 奇数长度回文
len2 = expandAroundCenter(s, i, i + 1) # 偶数长度回文
max_len = max(len1, len2)
if max_len > end - start:
start = i - (max_len - 1) // 2
end = i + max_len // 2
return s[start:end + 1]
ending
你好呀,我是苍何。是一个每天都在给自家仙人掌讲哲学的执着青年,我活在世上,无非想要明白些道理,遇见些有趣的事。倘能如我所愿,我的一生就算成功。共勉 💪
点击关注下方账号,你将感受到一个朋克的灵魂,且每篇文章都有惊喜。
感谢大家一直以来的阅读、在看和转发,我会把流量主收益都用来发红包,大家可在公众号页面发送相关暗号关键词获取抽奖,每一篇文章会给到一个不同的暗号,对应的抽奖都是独立的,此篇暗号为【计算机】,在后台回复【计算机】,即可点击进去参与抽奖!抽奖内容、金额、个数等都无变化,在开奖前参与抽奖,操作均有效。
注意,后台(不是评论区,是后台)回复【计算机】即可参与抽奖。
后台回复(不是评论区,是后台)即可参与抽奖。
后台回复(不是评论区,是后台)即可参与抽奖。
就像大家之前回复【八股】一样。