Algorithm
本周的算法题为 14. 最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""
。
示例 1:
输入:strs = ["flower","flow","flight"]
输出:"fl"
实现代码如下:
if (strs[0] == "") {
return ""
}
if (strs.length == 1) {
return strs[0]
}
for (let i = 0; i < strs.length; i++) {
for (let j = 0; j < strs.length - i - 1; j++) {
if (strs[j].length > strs[j + 1].length) {
let temp = strs[j]
strs[j] = strs[j + 1]
strs[j + 1] = temp
}
}
}
let minStr = strs[0]
for (let i = 0; i < minStr.length; i++) {
const minStrValue = minStr[i];
for (let j = 1; j < strs.length; j++) {
if (strs[j][i] !== minStrValue) {
return minStr.substring(0, i)
}
}
}
return minStr
解题思路:
-
总的来说就是,先将字符串数组排序,拿到最短的字符串,通过编辑这个最短的字符串,依次对比其他字符串相同下标的字符,是否相等,拿到出现不相等的下标,然后截取这个最短字符串的前缀即是我们要求的值。 -
首先,如果字符串数组是 [""]
,直接返回结果为""
。 -
如果字符串数组只有一个元素,就返回元素自身。 -
使用冒泡排序,将字符串数组,长度最短的字符串放在前面,获取最短字符串的值。 -
遍历最短字符串,依次对比其他字符串的相同下标的字符,是否相等,如果不相等,就返回存在不相等的下标,比如 [ 'flow', 'flower', 'flight' ]
,通过flow
来遍历,然后会在o
也就是下标为2
时,出现不相等,此时就截取最短字符串的值,minStr.substring(0, i)
,最长公共前缀。 -
题外话,前面的 if
是在力扣提交解法,反馈之后补上的,有点写测试用例的意思,当时我也在想,能不能有一个完美的解法,但是,仔细一想,直接根据特殊场景,给出直接的结果,虽然会觉得代码有点难看,但结果本身就是提高算法效率的事情,所以就这样了。一开始这道题目没有一点思路的,反复研究,才想到解法。不管解法好坏,当下的目的是解得出来,思路最重要,等积累到一定程度,自己能力有所长进,相信给出的解法一定会越来越优雅。
Review
Stop Telling People Everything. My experience | by Oyinade | Oct, 2023 | Medium
你知道,当人们说不要透露下一步或者自己的计划给别人,不要告诉别人任何事情。在某种程度上,我一直觉得这句话很难理解,因为你不告诉别人你的情况,别人怎么能帮到你呢?我想说的是,没有人天生就是一座孤岛,在你生命的某个时刻,你需要和别人有交集。你需要别人帮助你,指导你,给你指路。
让我用自己来举例子,在三年前,当我还在读大学的时候,我接到了一个很小的项目,我决定测试一下这句话,看看我最后的表现如何,所以我没有告诉任何人关于这个项目。
当然,我对这个项目做了研究,我还上网寻求指导,我很有信心它会成为一个非常棒的项目。
我要展示作品的那一天到来了,当我起身开始展示时,我的很多朋友,甚至我周围的人,都有点震惊地发现,我被交给了这个项目,却没有提起任何事情,因为这是一个相当大的交易。
我能听到有人说,“她为什么不告诉我们”的窃窃私语,但木已成舟,我现在要展示它。当我开始我的演讲时,我没有足够的信心来讲好,我的肢体语言传达了一个完全不同的信息,我匆忙做了所有的事情,一个本应该花45分钟简单而清晰的解释的演讲,在15分钟内就完成了。
讲师们很不高兴,事实上,如果我能把他们脸上的表情用语言表达出来,那就是,我们应该把它交给别人。
在我完成演讲后,我的一个朋友过来问我,你为什么不告诉我们,然后我们就可以帮助你或指导你怎么做了。我一句话也说不出来,因为我认为我做的是对的。但是我的表现和对整个情况的判断低于平均水平,没有给人留下深刻的印象。
说句公道话,我会让别人教我怎么做,我从那次经历中学到了什么呢,那就是,如果你不知道如何做某件事,就向能帮助你的人求助,不要指望自己能做得很好。
“别再向别人透露你的计划了。”
我认为我对这个概念的理解不够好,或者我可能把它用在了错误的情况下。我甚至读过一些关于生活中真正成功人士的书,他们也说了同样的话,但我不明白他们的意思。
我仍然在努力理解这句话的真正含义以及如何应用它。如果你能帮助我更清楚地理解,我将不胜感激,因为最近我一直在经历艰难的挑战,老实说,我需要帮助。
所以我同意这句话吗?不完全是。我觉得如果你的计划需要帮助,你应该去找那些更了解你的人,那些有纯洁意图的人。
Tip
X [ERROR] No known conditions for "./lib/locale/lang/zh-cn" specifier in "element-plus" package [plugin vite:dep-scan]
Vue3
项目模版打算部署至Sentry
前端监控系统试用,然后就运行项目,因为nodejs
版本升级到了v18.18.0
,出现一些依赖不兼容的问题,就打算趁这个机会升级至Vite5
,然后就遇到了Element Plus
组件库国际化问题,研究了一下,是用法上面有了变化导致的,具体可以看这个issue
,[i18n] [All] [plugin:vite:import-analysis] No known conditions for "./lib/locale/lang/zh-cn" specifier in "element-plus" package · Issue #13609 · element-plus/element-plus (github.com),方案就是:
// 2.3.7以及之前的用法
import zhCN from "element-plus/lib/locale/lang/zh-cn";
import en from "element-plus/lib/locale/lang/en";
// 2.3.8+
import zhCN from "element-plus/dist/locale/zh-cn.mjs";
import en from "element-plus/dist/locale/en.mjs";
Share
”我今天去种地了,什么地?对你的死心塌地。我今天还钓鱼了,什么鱼?对你的至死不渝。“在B站听的电影解说,现听现抄,被逗笑了,实属蚌埠住了。
本文由 mdnice 多平台发布