首页 > 其他分享 >go刷题Leetcode,生成文件夹与go文件模板

go刷题Leetcode,生成文件夹与go文件模板

时间:2023-07-25 20:11:32浏览次数:31  
标签:字符 name fmt 文件夹 go main Leetcode 刷题

go生成文件夹与模板

起因

以前是用C/C++刷Leetcode时,将多个C/CPP文件放在同一个目录下,没有出任何问题,但是换成Go语言刷题。

在一个目录下创建多个go文件,每个文件都是以下

package main

func main(){
    
}

在vscode下会出问题,会报错,这让我很难受。

这样做,在Goland下没有问题,Goland YYDS.

发现以下目录结构,一个问题件下放置一个go文件,就不会报错。

[文件夹]go
→[文件]go.mod
[文件夹]1两数相加
→[文件]1两数相加.go
.....
[文件夹]2679矩阵中的和
→[文件]2679矩阵中的和.go

但是在VSCode下得先

  • 创建一个文件夹,修改文件名;
  • 创建go文件,修改文件名;
  • 写入go内容

但是,我们是程序员,为什么不写个程序自动生成?

所以有了下面的内容。

正文

package main

import (
	"fmt"
	"os"
	"regexp"
	"strings"
)

var Temp = []string{`package main
import (
	"fmt"
)`, `func main() {
	fmt.Println("Hello world!")
}`,
}

// 生成题目文件夹
func buildDirAndFile(name string, des string) {
	reg := regexp.MustCompile("\\s+|\\.")
	name = reg.ReplaceAllString(name, "")
	path, _ := os.Getwd()
	//path = "vscode_golang"
	targetPath := path + "\\" + name
	// fmt.Println(targetPath)
	err := os.Mkdir(targetPath, 0755)
	if err != nil {
		fmt.Println(targetPath, " 自动生成失败!")
	}
	fmt.Println(targetPath, " 自动生成成功!")
	file, err := os.Create(targetPath + "\\" + name + ".go")
	// Temp = append(Temp, "\n\n//"+des)
	newContent := Temp[0]
	for _, s := range strings.Split(des, "\n") {
		newContent += "\n//" + reg.ReplaceAllString(s, "")
	}
	newContent += "\n\n" + Temp[1]
	file.WriteString(newContent)
	file.Close()
}
func main() {
	var name string = "76. 最小覆盖子串"
	var description string = `给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 "" 。
	注意:
	对于 t 中重复字符,我们寻找的子字符串中该字符数量必须不少于 t 中该字符数量。
	如果 s 中存在这样的子串,我们保证它是唯一的答案。`

	fmt.Println("Hello world!")
	buildDirAndFile(name, description)
}

效果

package main
import (
	"fmt"
)
//给你一个字符串s、一个字符串t。返回s中涵盖t所有字符的最小子串。如果s中不存在涵盖t所有字符的子串,则返回空字符串""。
//注意:
//对于t中重复字符,我们寻找的子字符串中该字符数量必须不少于t中该字符数量。
//如果s中存在这样的子串,我们保证它是唯一的答案。

func main() {
	fmt.Println("Hello world!")
}

标签:字符,name,fmt,文件夹,go,main,Leetcode,刷题
From: https://www.cnblogs.com/auspice/p/17580903.html

相关文章

  • Jmeter配置起来太繁琐?试试RunnerGo
    在用jmeter做性能测试时想看完整一点的测试报告,想配置阶梯模式来压测,想配置不同的接口并发这些都需要安装插件并且影响机器性能,想做自动化测试还得放到jenkins,这些配置起来太繁琐。今天给大家推荐一款测试平台RunnerGo,内置各种测试工具解决这些痛点。不需要扩展插件即可实时查看测......
  • goaccess日志分析器使用
    一、安装goaccess软件1、安装依赖yum-yinstalllibmaxminddb-develncurses-libsncurses-developensslopenssl-devel2、下载软件wgethttps://tar.goaccess.io/goaccess-1.4.tar.gz3、编译安装tar-xzvfgoaccess-1.4.tar.gz-C/usr/local/cd/usr/local/goaccess-......
  • 纯手撸 Django web框架批量删除redis的key
    纯手撸Djangoweb框架批量删除redis的key环境环境参照上一章节博客部署环境,在此基础上进行功能加强【批量删除指定前缀的key】,然后再CI里面掉这个接口地址即可清理redis缓存的key,更加高效的运维工作修改视图##mysite/myweb1/views.py#Createyourviewshere.fromdj......
  • Go语言中的iface和eface
    iface和eface是Go语言中用于实现接口的两种内部数据结构。它们都用于在运行时表示接口值,但它们在处理不同类型的接口上有不同的用途和区别。iface(interfacevalue):iface是用于表示具有非空接口值的数据结构。iface结构包含两个字段:一个指向实际值的指针和一个指向类型......
  • calico报错son: cannot unmarshal string into Go struct field NetConf.mtu of type
     于是describe查看宿主机的配置文件查看日志没有相关日志查看calico的相关配置文件值找到于是想着直接去修改calico的Configmap发现修改不成功便去查询宿主机映射的calico挂载文件把标记部分的string给成int去掉双引号,然后重启calico然后通过ansible分发到每台机器上an......
  • LeetCode 406. 根据身高重建队列
    classSolution{public:structnode{intval;intpre;node*next;node(inta,intb,node*c){val=a;pre=b;next=c;}};voidinsert(node*&head,int......
  • Cloud Ace 成为 Google Cloud Next '23 联合赞助商
    CloudAce是谷歌云全球战略合作伙伴,拥有300多名工程师,也是谷歌最高级别合作伙伴,多次获得GoogleCloud合作伙伴奖。作为谷歌托管服务商,我们提供谷歌云、谷歌地图、谷歌办公套件、谷歌云认证培训服务。CloudAce,Inc.(总部位于东京千代田区;总裁青木诚;以下简称“CloudAce”)将成......
  • 【go语言】1.1.1 Go 语言的历史和背景
    Go语言,也被称为Golang,是一种静态强类型、编译型的开源编程语言。Go语言的出现是为了解决当下的软件开发问题,特别是大规模软件系统的开发。Go语言的设计者包括RobertGriesemer、RobPike和KenThompson,他们都是在Google工作的资深工程师。他们发现当时的编程语言,无论是......
  • Go defer 去掉闭包函数,靠谱吗?
    在Go中使用defer时,如果defer语句包含了一个闭包函数,需要特别小心。因为defer语句会在函数返回时执行,而闭包函数可能会捕获外部变量,导致意想不到的结果。在Go中,defer语句中的闭包函数捕获的是变量的地址,而不是变量的值。如果闭包函数在defer执行时才被调用,可能会导致捕获的变量值......
  • leetcode第354场周赛 2 - 双指针
    题目传送门2779.数组的最大美丽值题意给你一个数组和一个整数k,数组里面每个数都只能操作一次:加上区间\([-k,k]\)里的数。问你最终由相等元素组成的最长子序列的长度双指针的妙用!思路先排序,前后双指针取差值在2k之间的区间,此区间的所有数均可以操作为同一个属,ans统计最大值......