'外观数列'

This commit is contained in:
zhuyijun 2021-04-04 22:58:48 +08:00
parent 552889ff24
commit 95aa943b60
3 changed files with 95 additions and 37 deletions

View File

@ -1,39 +1,3 @@
# algorithms-go
Golang语言算法
#### 介绍
{**以下是 Gitee 平台说明,您可以替换此简介**
Gitee 是 OSCHINA 推出的基于 Git 的代码托管平台(同时支持 SVN。专为开发者提供稳定、高效、安全的云端软件开发协作平台
无论是个人、团队、或是企业,都能够用 Gitee 实现代码托管、项目管理、协作开发。企业项目请看 [https://gitee.com/enterprises](https://gitee.com/enterprises)}
#### 软件架构
软件架构说明
#### 安装教程
1. xxxx
2. xxxx
3. xxxx
#### 使用说明
1. xxxx
2. xxxx
3. xxxx
#### 参与贡献
1. Fork 本仓库
2. 新建 Feat_xxx 分支
3. 提交代码
4. 新建 Pull Request
#### 特技
1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md
2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com)
3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目
4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目
5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help)
6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)

View File

@ -0,0 +1,60 @@
package main
import (
"bytes"
"fmt"
"strconv"
)
/**
给定一个正整数 n 输出外观数列的第 n
外观数列是一个整数序列从数字 1 开始序列中的每一项都是对前一项的描述
你可以将其视作是由递归公式定义的数字字符串序列
countAndSay(1) = "1"
countAndSay(n) 是对 countAndSay(n-1) 的描述然后转换成另一个数字字符串
前五项如下
1. 1
2. 11
3. 21
4. 1211
5. 111221
第一项是数字 1
描述前一项这个数是 1 1 记作 "11"
描述前一项这个数是 11 1 记作 "21"
描述前一项这个数是 21 2 + 1 记作 "1211"
描述前一项这个数是 1211 1 + 2 + 1 记作 "111221"
*/
func countAndSay(n int) string {
// 递归出口
if n == 1 {
return "1"
}
// 假设我们获得上一次的结果为 s1 = 112213
var s = countAndSay(n-1)
// 定义结果
var result bytes.Buffer
count := 0
// 对s1遍历处理获取值
local := s[0]
for i:=0;i < len(s); i++ {
// 设定计数器 计算同一个数字出现的次数 count
if s[i] == local {
count++
}else {
// 不符合,记录下
result.Write([]byte(strconv.Itoa(count)))
result.WriteByte(local)
count =1
local = s[i]
}
}
result.Write([]byte(strconv.Itoa(count)))
result.WriteByte(local)
return result.String()
}
func main() {
fmt.Println(countAndSay(4))
}

View File

@ -0,0 +1,34 @@
package main
/**
实现strStr()函数
给定一个haystack 字符串和一个 needle 字符串 haystack
字符串中找出 needle 字符串出现的第一个位置 (从0开始)如果不存在则返回 -1
*/
func strStr(haystack string, needle string) int {
if len(needle) == 0 || needle == "" {
return 0
}
if len(needle) > len(haystack) {
return -1
}
count := 0
size := len(needle)
for i:=0; i<= len(haystack) - size;i++ {
if haystack[i:i+size] == needle {
break
}
count++
}
if count > len(haystack) - size {
return -1
}
return count
}
func main() {
println(strStr("hello","ll"))
println(strStr("aaaaa","aaaaaa"))
}