Go语言中文网 为您找到相关结果 457

leetcode_541

Golang: 思路:暴力算法 代码如下: func reverseStr(s string, k int) string { if len(s)<=1 { return s } bytes := []byte(s) reverseBytes(bytes,0,k) return string(bytes) } func reverseBytes(arr []byte,i int,k int) { j:=k-1+i //剩余字符串小于k if j>len(arr)-1 { j=len(arr)-1 swapBytes(arr,i,j) return } //剩余字符串大于k小于等于2k if j+k>=len(arr)-1 { swapBytes(arr,i,j) return }else {...阅读全文

博文 2020-02-01 03:32:56 淳属虚构

leetcode_409

Golang: 思路:这题就是套了个回文串的壳子,实际上呢,就是找到字符串里所有成对字母的数量,然后,如果有落单的,这个数目就加1。 实现:我用了个长度为52的数组存储所有单词的数目,然后统一处理,求出上文提到的数目。 代码如下: func longestPalindrome(s string) int { if len(s)<=1 { return len(s) } temp:=make([]int,52) for _,v:=range s{ if v>=97 { temp[v-97]++ }else{ temp[v-39]++ } } f,sum:=0,0 for i:=0; i< len(temp); i++ { sum=sum+temp[i] if f==0 { if temp[i]...阅读全文

博文 2020-01-30 21:32:47 淳属虚构

leetcode_49

Golang: 思路:对所有字符串处理(排序),字母异位词必然会有同一排列。 代码如下: type Bytes []byte func (b Bytes) Len() int { return len(b) } func (b Bytes) Less(i, j int) bool { return b[i] < b[j] } func (b Bytes) Swap(i, j int) { b[i], b[j] = b[j], b[i] } func groupAnagrams(strs []string) [][]string { mp:=make(map[string][]string) for _,v:=range strs{ bytes:=[]byte(v) sort.Sort(Byt...阅读全文

博文 2020-03-19 15:33:55 淳属虚构

leetcode_811

Golang: 思路:这题是字符串处理吧,没啥好说的,但是这里我的代码需要精简一下,Count函数那里,有多余的时间复杂度。 代码如下: func subdomainVisits(cpdomains []string) []string { mp:=make(map[string]int) for _,v:=range cpdomains{ flds:=strings.Fields(v) count,_:=strconv.Atoi(flds[0]) mp[flds[1]]+=count temp:=flds[1] for strings.Count(temp,".")>0 { temp=temp[strings.Index(temp,".")+1:] mp[temp]+=count } } ...阅读全文

博文 2020-02-27 07:32:39 淳属虚构

leetcode_68

Golang: 思路:刚开始看题会觉得有些麻烦,但实际上,也没啥技巧,就是处理字符串 代码如下: func fullJustify(words []string, maxWidth int) []string { var wordlist []string var res []string j,length:=0,0 for jmaxWidth{ //结束,处理wordlist handleWordList(wordlist...阅读全文

博文 2020-03-23 19:32:47 淳属虚构

leetcode_819

Golang: 思路:这题的难点也在字符串的处理,但大部分的语言都提供类似的函数了,如果我们想提取字符串里的所有单词,使用正则是很好的途径,自己去分割字符串,处理标点符号,反而没什么意思。 代码如下: func mostCommonWord(paragraph string, banned []string) string { reg:=regexp.MustCompile("\\w+") mp1,mp2:=make(map[string]int),make(map[string]int) for _,v:=range banned{ mp1[v]=1 } if reg!=nil { strs:=reg.FindAllString(paragraph,-1) for _,v:=range s...阅读全文

博文 2020-02-27 09:32:41 淳属虚构

leetcode_1002

Golang: 思路:每个字符串进行比较即可 代码如下: func commonChars(A []string) []string { arr1:=make([]int,26) for k,w:=range A{ arr2:=make([]int,26) for _,b:=range w{ arr2[b-'a']++ } if k==0{ copy(arr1,arr2) }else{ for k,_:=range arr1{ arr1[k]=min(arr1[k],arr2[k]) } } } var res []string for k,v:=range arr1{ for i:=0;i阅读全文

博文 2020-04-15 09:32:45 淳属虚构