当前位置: 首页 > news >正文

浙江高端网站建设域名交易平台

浙江高端网站建设,域名交易平台,网页设计基础课程设计问题反馈,重庆建网提取公共代码前言一、字母版上的路径二、贪心1、idea2、go3、代码不断拆分复用的过程总结参考文献前言 写代码,在提高效率的同时,要方便人看,这个人包括自己。大函数要拆分成一些小函数,让每个函数的宏观目的和步骤都显得清晰&am…

提取公共代码

  • 前言
  • 一、字母版上的路径
  • 二、贪心
    • 1、idea
    • 2、go
    • 3、代码不断拆分复用的过程
  • 总结
  • 参考文献

前言

写代码,在提高效率的同时,要方便人看,这个人包括自己。大函数要拆分成一些小函数,让每个函数的宏观目的和步骤都显得清晰,读起来才容易懂。除此之外,拆分也有讲究,提取公共代码,尽量减少重复无意义的代码,提高复用率。

一、字母版上的路径

在这里插入图片描述

二、贪心

1、idea

// 根据字母的ascall码可以确定它在board中的坐标。
// a - 97 == v,<x = v / 5,y = v % 5>
// cur:<0,0> t: <x,y>
// 前5行,先x或者y都无所谓
// 前五行到第6行,只能先y再x
// 第6行到前5行,只能先x再y

2、go

func alphabetBoardPath(target string) string {sb := &strings.Builder{}n := len(target)x,y := 0,0upDown,LeftRight := [2]byte{'U','D'},[2]byte{'L','R'}for i := 0;i < n;i++ {// 定位该字符在黑板上的坐标v := target[i] - 97nx,ny := int(v / 5),int(v % 5)// 根据当前坐标和目的坐标进行移动。if nx == 5 {// 去z那个地方,必须先L,再Dmove(y,ny,sb,LeftRight)move(x,nx,sb,upDown) } else {move(x,nx,sb,upDown)move(y,ny,sb,LeftRight) }// 寻找到该字符,将其加入。sb.WriteByte('!')x,y = nx,ny}return sb.String()
}
// 不断抽象,复用代码。
// 最开始是xY(int,int,int,int,*strings.Builder)函数,以及yX(int,int,int,int,*strings.Builder)函数;
// 发现对x或y的动作是一致的,所以拆解成单个x的动作moveX | moveY,
// 继续抽象,moveX | moveY代码都差不多,只是加入的ch不一样,所以将ch当作变量传入,将两函数合并成move函数。
func move(z,nz int,sb *strings.Builder,choice [2]byte){zGap := z - nzch := choice[0]if zGap < 0 {ch = choice[1]}for i := 0;i < abs(zGap);i++ {sb.WriteByte(ch)}
}
func abs(x int) int {if x < 0 {return -x}return x
}

3、代码不断拆分复用的过程

// 不断抽象,复用代码。
// 最开始是xY(int,int,int,int,*strings.Builder)函数,以及yX(int,int,int,int,*strings.Builder)函数;
// 发现对x或y的动作是一致的,所以拆解成单个x的动作moveX | moveY,
// 继续抽象,moveX | moveY代码都差不多,只是加入的ch不一样,所以将ch当作变量传入,将两函数合并成move函数。
func move(z,nz int,sb *strings.Builder,choice [2]byte){zGap := z - nzch := choice[0]if zGap < 0 {ch = choice[1]}for i := 0;i < abs(zGap);i++ {sb.WriteByte(ch)}
}

总结

1)每个函数拆分,做到有清晰的宏观目的和宏观步骤,这样后来的人包括自己才能更容易的看懂。
2)拆分代码,也要提取公共代码,尽量减少重复无意义的代码,提高复用率。

参考文献

[1] LeetCode 字母板上的路径

http://www.ds6.com.cn/news/90385.html

相关文章:

  • 做网站获取手机号码北京网站建设公司优势
  • cms做企业网站域名交易中心
  • 网站开发制作报价seo中心
  • 海口cms模板建站宝塔没有域名直接做网站怎么弄
  • 晋城市建设局网站网游推广
  • 建个网站我在万网购买了一个域名接下来要怎么做网站推广的基本手段有哪些
  • wordpress口语主题郑州网站优化
  • 中间商网站怎么做如何把网站推广出去
  • 合肥网站制作QQ搜索引擎优化的方法与技巧
  • 郑州做网站建设网站关键词排名快速提升
  • 深圳培训网站开发徐州网络推广服务
  • 住建部四库一平台免费网站seo
  • 网站个人简介怎么做seo企业顾问
  • 风铃上做的网站发布时号码填写引流推广广告怎么写
  • 金融网站cms上海最新新闻
  • 怎么做微网站网络宣传渠道有哪些
  • 做服装外贸的网站建设今天刚刚发生的新闻事故
  • 网站建设和网站开发的区别外链大全
  • 做网站常用软件seo优化软件大全
  • 做网站宽度和长度布局怎么建自己的网站?
  • 建建建设网站关键词查询爱站网
  • 网站注册费计入什么科目精准营销案例
  • 营销型网站开发推广电商的运营模式有几种
  • 用qt做网站可以吗政府免费培训面点班
  • 如何自己建设电影网站seo排名赚app官网
  • 想建设网站app推广注册放单平台
  • wordpress seo技巧安卓系统优化大师
  • 湖南做网站 就问磐石网络专业免费男女打扑克的软件
  • 做网站包括什么条件做网上推广
  • 网站改版升级方案东莞企业推广网站制作