'外观数列'
This commit is contained in:
parent
552889ff24
commit
95aa943b60
38
README.md
38
README.md
@ -1,39 +1,3 @@
|
|||||||
# algorithms-go
|
# 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/)
|
|
||||||
|
60
leetcode/初级算法/字符串/外观数列/main.go
Normal file
60
leetcode/初级算法/字符串/外观数列/main.go
Normal 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))
|
||||||
|
}
|
34
leetcode/初级算法/字符串/实现strStr/main.go
Normal file
34
leetcode/初级算法/字符串/实现strStr/main.go
Normal 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"))
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user