什么是PREP?算法的PREP技术

作者 : IT 大叔 本文共1864个字,预计阅读时间需要5分钟 发布时间: 2020-09-19

什么是PREP

PREP是一种应对算法编码挑战的方法。首字母缩写词代表“参数”,“返回”,“示例”,“伪代码”。

  • 参数
    输入的参数类型是什么?是否有多个或默认参数?
  • 退货
    要求退货的类型是什么?
  • 示例
    提供2-3个有关使用某些参数调用该函数的预期结果的示例。你能想到任何边缘情况吗?
  • 伪代码
    编写有关如何解决问题的非正式步骤。考虑一下参数是什么,需要采取什么步骤才能达到我们的预期收益。所有显示“依赖性”的语句都应缩进。

例子

逆转()

给定一个字符串,返回一个具有相反字符顺序的新字符串。

  • P-单字符串参数
  • R-与原始字符串参数相反的字符串
  • E-说明空格,大写字母和标点符号
// reverse('hello world') --> 'dlrow olleh'
// reverse('Love!') --> '!evoL'
// reverse('JavaScript') --> 'tpircSavaJ'
  • P-见下文
function reverse(str) {
  // With keyword let, declare & assign a variable reverseStr to ''

  // Iterate over str from the last idx to the 0th idx
    // Add the character at the current idx to reverseStr

  // return reverseStr

}

现在,将伪代码过程转换为代码。

function reverse(str) {
  // With keyword let, declare & assign a variable reverseStr to ''
  let reverseStr = ''
  // Iterate over str from the last idx to the 0th idx
    // Add the character at the current idx to reverseStr
  for (let i=str.length-1; i>=0; i--) {
    reverseStr+=str[i]
  }
  // return reverseStr
  return reverseStr
}

大写()

编写一个接受字符串的函数。该函数应将字符串中每个单词的首字母大写,然后返回大写的字符串。

  • P-单字符串参数
  • R-一个字符串,原始字符串参数的每个单词的第一个字符都大写
  • E-空格和标点符号
//   capitalize('hello world!') --> 'Hello World!'
//   capitalize('i love code') --> 'I Love Code'
//   capitalize('one, two, three...') --> 'One, Two, Three..'
  • P-见下文
function capitalize(str) {
  // Split the str argument by the spaces ' ', creating an array of words

  // With the array of words, use map method to capitalize each word's first element at index 0 & join it to the remaining word's letters

  // Rejoin the words by a space ' '

  // Wrap the code above in a return

}

现在,将伪代码过程转换为代码。

function capitalize(str) {
  // Split the str argument by the spaces ' ', creating an array of words
  str.split(' ')
  // With the array of words, use map method to capitalize each word's first element at index 0 & join it to the remaining word's letters
  .map(word => word[0].toUpperCase() + word.slice(1))
  // Rejoin the words by a space ' '
  .join(' ')
  // Wrap the code above in a return

}

对于我们的最后一步,我们需要将return关键字带到代码块的顶部。

function capitalize(str) {
  return str.split(' ')
            .map(word => word[0].toUpperCase() + word.slice(1))
            .join(' ')
}

结论

在求解算法时,请记住考虑您的参数立即返回 。如果没有提供示例,请自己写下一些示例,以便您随时进行测试。对如何解决问题并将其保留为可转换为代码的语法进行编码。

免责声明:
1. 本站资源转自互联网,源码资源分享仅供交流学习,下载后切勿用于商业用途,否则开发者追究责任与本站无关!
2. 本站使用「署名 4.0 国际」创作协议,可自由转载、引用,但需署名原版权作者且注明文章出处
3. 未登录无法下载,登录使用金币下载所有资源。
IT小站 » 什么是PREP?算法的PREP技术

常见问题FAQ

没有金币/金币不足 怎么办?
本站已开通每日签到送金币,每日签到赠送五枚金币,金币可累积。
所有资源普通会员都能下载吗?
本站所有资源普通会员都可以下载,需要消耗金币下载的白金会员资源,通过每日签到,即可获取免费金币,金币可累积使用。

发表评论