Golang 切片数组打印元素两数只和等于8的下标、无重复字符的最长子串
2023-09-11 14:14:56 时间
Golang 切片数组打印元素两数只和等于8的下标
package main
import "fmt"
func main() {
var nums = []int{2, 5, 8, 6}
res := twoSum(nums, 8)
fmt.Println(res)
}
func twoSum(nums []int, target int) []int {
length := len(nums)
match := make(map[int]int, length)
for i := 0; i < length; i++ {
// fmt.Println(target, nums[i])
if index, ok := match[target-nums[i]]; ok {
return []int{index, i}
}
match[nums[i]] = i
}
return nil
}
// []int{2:0,3:1,8:0}
PS E:\TEXT\test_go\test> go run .\main.go
[0 3]
PS E:\TEXT\test_go\test>
无重复字符的最长子串
package main
import "fmt"
func main() {
fmt.Println(lengthOfLongestSubstring("wgchenswg"))
}
func lengthOfLongestSubstring(s string) int {
// 哈希集合,记录每个字符是否出现过
m := map[byte]int{}
n := len(s)
// 右指针,初始值为 -1,相当于我们在字符串的左边界的左侧,还没有开始移动
rk, ans := -1, 0
for i := 0; i < n; i++ {
if i != 0 {
// 左指针向右移动一格,移除一个字符
delete(m, s[i-1])
}
for rk+1 < n && m[s[rk+1]] == 0 {
// 不断地移动右指针
m[s[rk+1]]++
rk++
}
// 第 i 到 rk 个字符是一个极长的无重复字符子串
ans = max(ans, rk-i+1)
}
return ans
}
func max(x, y int) int {
if x < y {
return y
}
return x
}
相关文章
- mysql:字符分割,将字符分割成数组
- Java实现 LeetCode 821 字符的最短距离(暴力)
- Java实现 蓝桥杯VIP 算法训练 字符删除
- 字符数组,字符指针,sizeof,strlen总结
- IOS swift 字符(字符串)与ASCII数值(数组)互转([Character],String,[UInt8],bytes)
- C++ 返回字符数组的写法
- 1790. 仅执行一次字符串交换能否使两个字符串相等-统计字符不相同位置的数量
- 面试题 01.02. 判定是否互为字符重排-辅助数组算法
- 习题 5.4 输入一行字符,分别统计出其中英文字母、空格、数字和其他字符个数。
- qt 去除qstring重复的字符
- C语言实现用指定字符切割字符串并返回数组
- leetcode 3. 无重复字符的最长子串 js 实现
- Linux下设置字符界面开机启动及系统启动流程介绍
- 用字符指针指向一个字符串
- 正则表达式的限定符、或运算符、字符类、元字符、贪婪/懒惰匹配