给你一串字符串,如何找出最长的单词

前言

这回给大家介绍一道算法题,这是我在面试过程中问到的。不过当时面试官只需要我简述一下思路过程即可。我思考了片刻,便简单阐述了一下我的思路。本来我是不打算拿这题出来讲的,但是在我整理面试题的时候发现这道题竟然惊奇地出现过两次,因此还是决定讲一讲这道算法题了。

题目内容

题目大致是这样的,给你一串句子或者字符串,找出里面长度最长的单词。下面举个小例子:

css 复制代码
I want to eat a banner.

这里最长的单词是 banner,而我们需要做的就是如何找出 banner 这个单词。

解题思路

我先说说我当时的思路吧:如何找出句子中最长的单词,我们可以将每个单词单独拎出来进行长度比较,一层循环遍历过后,就可以找出最长的单词。

因为当时只是说思路,所以我也没有在意里面的细节,当时面试官可能也没有注意那么多,看我说出来了就选择问了其他题目。但是当我第二次遇到这道面试题的时候,面试官问我如何取出句子中的每个单词?如何进行遍历?具体使用到的方法是什么?我当时有点不知所措,这些方面确实没考虑过。就拿如何取出句子中的每个单词,我可能都没有立即想出用什么方法。

通过这次我也发现了自己的不足。或许有很多人和我一样,能说出解题的思路,但是不知道如何去实际解决,说白了就是一些基础知识还不够扎实,只会纸上谈兵。这里肯定会用到相关的 JS 原生方法,只不过我对它们的了解还不够熟悉,因此我后面就把 JS 原生方法又重新看了一遍。

上方法,上代码

我们需要熟悉字符串的一些方法,比如这里取出每个单词,就要使用到 split 方法,把字符串按照指定的分割符,拆分成数组中的每一项。这个问题解决了,剩下的就好办了。

split 方法举例如下:

ini 复制代码
let str = "12+23+34"
let arr = str.split("+") // [12,23,34]

然后开始比较每个单词的长度,给定一个 for 循环,使用 for...of... 方法,这样就可以遍历每个单词。比较完成后就将最后结果 return 出来即可。

最终代码如下所示:

ini 复制代码
function longestWord(str){
    let words = str.split(" ")
    let longestWord = ""
    for(let word of words){
        if(word.length>longestWord.length){
            longestWord = word
        }
    }
    return longestWord;
}

现在来拆解一下这段代码,首先把这一串字符串进行分割,然后开始遍历分割出来的单词,如果碰到长度更长的单词,就用变量将这个单词存储起来,就这样依次遍历到最后,就可以找到长度最长的单词了。

这个算法主要考察我们对字符串方法的了解程度,整体而言并不难。

总结

以上就是我从遇到到解决这道算法题的整个过程,虽然题目比较简单,但是还是能学到很多东西的,就比如字符串方法的应用等。往往有的时候我会因为说出了解题思路,而忽视了如何用代码去解决它,这一点还是非常重要的,它体现的是你的代码能力。总之,基础知识不容忽视,代码得多写多练才行~

相关推荐
BomanGe213 分钟前
NSK直线导轨LH55EL与NH55EM替代指南
前端·javascript·数据库·经验分享·规格说明书
云水一下13 分钟前
Vue.js从零到精通系列(四):前端路由与Vue Router——打造多页单页应用
前端·javascript·vue.js
2401_8856651917 分钟前
从零搭建卷积神经网络:基于PyTorch实现MNIST手写数字分类
pytorch·python·神经网络·算法·机器学习·分类·cnn
bIo7lyA8v17 分钟前
算法优化的多层缓存映射与访问调度模型的技术8
算法
研☆香23 分钟前
jQuery补充知识点
前端·javascript·jquery
先吃饱再说25 分钟前
JavaScript栈和队列:从“冰柜里的雪糕”到“排队打饭”
javascript·数据结构
dongf201927 分钟前
R语言朴素贝叶斯算法---iris数据集
开发语言·算法·数据分析·r语言
槑有老呆27 分钟前
JavaScript 数组,远不止 [] 那么简单
javascript
小O的算法实验室27 分钟前
2025年KBS,基于强化学习离散状态转移算法+复杂约束下多无人机任务分配
算法
weixin_3077791330 分钟前
从“大海捞针”到“主动推理”:AI如何重塑云原生故障诊断的根因链
开发语言·人工智能·算法·自动化·原型模式