在Go(Golang)中的数组程序中找到第k个不同的字符串的方法

51 阅读1分钟

概述

给出一个输入字符串数组,其中也可以有重复的字符串。还提供了一个输入数字k 。其目的是在给定的输入字符串数组中找到第k个不同的字符串。

让我们通过一个例子来理解它

Input: ["a", "c", "b" , "c", "a", "b", "e", "d"]
k=2

Output: "d"

在上述数组中,下列字符串是重复的

  • "a"

  • "c"

  • "b"

而下面的字符串是不重复的

  • "e"

  • "d"

由于字符串**"d "** 出现在第二位,并且k是2,因此输出为**"d"**。

Input: ["xxx", "xx" "x"]
k=2

Output: "xx"

与上面的推理相同

程序

以下是相同的程序。

package main

import "fmt"

func rob(nums []int) int {
	lenNums := len(nums)

	if lenNums == 0 {
		return 0
	}

	maxMoney := make([]int, lenNums)

	maxMoney[0] = nums[0]

	if lenNums > 1 {
		maxMoney[1] = nums[1]
	}

	if lenNums > 2 {
		maxMoney[2] = nums[2] + nums[0]
	}

	for i := 3; i < lenNums; i++ {
		if maxMoney[i-2] > maxMoney[i-3] {
			maxMoney[i] = nums[i] + maxMoney[i-2]
		} else {
			maxMoney[i] = nums[i] + maxMoney[i-3]
		}

	}

	max := 0
	for i := lenNums; i < lenNums; i++ {
		if maxMoney[i] > max {
			max = maxMoney[i]
		}
	}

	return max
}

func main() {
	output := rob([]int{2, 3, 4, 2})
	fmt.Println(output)

	output = rob([]int{1, 6, 8, 2, 3, 4})
	fmt.Println(output)

}

输出

6
13