算法问题 - 使用 JavaScript 提供解决方案的入门指南
介绍
招聘人员如果想考察候选人的问题解决能力,就会给他们一些问题,并要求他们编写相应的算法。通过这种方式,招聘人员能够区分那些只会复制粘贴代码的人和那些真正理解语法和工作原理的人。但是,什么是算法呢?
跳转至:
算法(发音为AL-go-rith-um)是一种解决问题的程序或公式,它基于执行一系列特定的操作。计算机程序可以被视为一个复杂的算法。在数学和计算机科学中,算法通常指的是解决重复性问题(即“是什么”)的小型程序。
从上面的定义可以看出,算法是用来解决问题的,而要构建一个有效的算法,这个人必须对所要解决的问题有很好的理解。
在当前的技术发展趋势下,算法或问题解决能力方面的面试几乎不可避免。
鉴于这种现实情况,如何才能设计出解决问题的算法?
解决算法问题的步骤
- 理解——尝试理解问题,并将其分解成尽可能小的部分。
- 制定策略- 了解你的编程语言中有哪些工具可供你使用(本文以 JavaScript 为例)。
- 实施——利用这些工具解决每一个小问题,并将这些解决方案结合起来,形成解决整个问题的最终方案。
例如,如果遇到一个单词回文问题,你会如何编写解决该问题的算法?
让我们应用以上步骤。
步骤A:理解
这里最大的问题是检查我们得到的单词反过来是否仍然相同。
然而,为了实现这一目标,我们必须先解决一些较小的问题,例如:
- 如何保留对原始出处的引用。
- 如何反转单词。
- 但是,要反转单词,我们需要将单词拆分成字符。
- 如果我们最终逆转了这一过程,我们需要将这些角色结合起来。
- 最后,我们需要将新词与旧词进行比较。
步骤二:制定策略
我们披露时使用的一些工具包括以下这些:
- 变量
- 。分裂()
- 价差运营商
- if...else...条件语句
- 三元运算符
- 。撤销()
- 。加入()
步骤 C:实施
将这个问题分解成更小的部分后,我们可以利用variableJavaScript 提供的工具来保留原始单词的副本。
const orginalWord = word;
由于我们不能直接反转字符串,我们需要使用该.split("")方法分割单词并将其转换为数组。
let splittedWord = word.split("");
现在我们可以像这样反转数组.reverse():
let reversedWord = splittedWord.reverse();
现在顺序已经反转了。但是我们需要把它转换成一个没有分隔符的字符串。所以我们可以使用以下方法.join("")来实现:
let newWord = reversedWord.join("");
最后,让我们比较一下最初得到的单词和我们现在反转后的单词。
if(orginalWord === newWord){
console.log(true)
}else{
console.log(false)
}
最终代码
function palindrome(word){
const orginalWord = word;
let splittedWord = word.split("");
let reversedWord = splittedWord.reverse();
let newWord = reversedWord.join("");
if(orginalWord === newWord){
return(true)
}else{
return(false)
}
}
其他人可以用以下代码解决这个问题:
function palindrome(word){
return(word === [...word].reverse().join(""))
}
注意,如果把问题分解开来,解决起来就容易多了。所以,算法的本质就是如何分而治之!
人们常说熟能生巧。因此,我特地准备了以下系列教程,旨在帮助你提升问题解决能力。这个系列教程是我之前决定深入学习算法时制作的。这个决定极大地提升了我的编程技能,我相信它也能同样提升你的编程水平,并增加你在技术面试中的成功率。
所以,请尽情欣赏这部剧集……
25种算法助你提升问题解决能力
奖金
结论
通过以上内容可以看出,算法并没有看起来那么难。本质上,它就是解决日常问题。但是,如果不练习,就很难轻松解决问题。
所以我鼓励你们按照上面介绍的算法系列进行学习和练习。
文章来源:https://dev.to/ebereplenty/algorithm-problems-baby-steps-in-providing-solutions-using-javascript-1edp



