ARTS Week 7

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

解题思路:

  1. 总的来说就是,先将字符串数组排序,拿到最短的字符串,通过编辑这个最短的字符串,依次对比其他字符串相同下标的字符,是否相等,拿到出现不相等的下标,然后截取这个最短字符串的前缀即是我们要求的值。
  2. 首先,如果字符串数组是 [""],直接返回结果为 ""
  3. 如果字符串数组只有一个元素,就返回元素自身。
  4. 使用冒泡排序,将字符串数组,长度最短的字符串放在前面,获取最短字符串的值。
  5. 遍历最短字符串,依次对比其他字符串的相同下标的字符,是否相等,如果不相等,就返回存在不相等的下标,比如 [ 'flow', 'flower', 'flight' ],通过 flow来遍历,然后会在 o也就是下标为 2时,出现不相等,此时就截取最短字符串的值, minStr.substring(0, i),最长公共前缀。
  6. 题外话,前面的 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 多平台发布

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AR7_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值