Golang 切片数组打印元素两数只和等于8的下标无重复字符的最长子串

Posted 知其黑、受其白

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Golang 切片数组打印元素两数只和等于8的下标无重复字符的最长子串相关的知识,希望对你有一定的参考价值。

Golang 切片数组打印元素两数只和等于8的下标

package main

import "fmt"

func main() 
	var nums = []int2, 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 []intindex, i
		
		match[nums[i]] = i
	
	return nil


// []int2: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

以上是关于Golang 切片数组打印元素两数只和等于8的下标无重复字符的最长子串的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode刷题8——两数之和

golang之数组,切片

Golang M 2023 4 topic

LeetCode Golang实现 1. 两数之和

Leetcode第一题:两数之和

PHP数组中,如何查询所有等于指定值得元素下标?