From 95aa943b600dfc4ff1b3e75a4a66dc9ab50ef660 Mon Sep 17 00:00:00 2001 From: zhuyijun Date: Sun, 4 Apr 2021 22:58:48 +0800 Subject: [PATCH] =?UTF-8?q?'=E5=A4=96=E8=A7=82=E6=95=B0=E5=88=97'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 38 +------------ leetcode/初级算法/字符串/外观数列/main.go | 60 +++++++++++++++++++++ leetcode/初级算法/字符串/实现strStr/main.go | 34 ++++++++++++ 3 files changed, 95 insertions(+), 37 deletions(-) create mode 100644 leetcode/初级算法/字符串/外观数列/main.go create mode 100644 leetcode/初级算法/字符串/实现strStr/main.go diff --git a/README.md b/README.md index 8d0361b..615baf7 100644 --- a/README.md +++ b/README.md @@ -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/) diff --git a/leetcode/初级算法/字符串/外观数列/main.go b/leetcode/初级算法/字符串/外观数列/main.go new file mode 100644 index 0000000..ec49280 --- /dev/null +++ b/leetcode/初级算法/字符串/外观数列/main.go @@ -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)) +} diff --git a/leetcode/初级算法/字符串/实现strStr/main.go b/leetcode/初级算法/字符串/实现strStr/main.go new file mode 100644 index 0000000..4ae7464 --- /dev/null +++ b/leetcode/初级算法/字符串/实现strStr/main.go @@ -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")) +}