概述
给出一个输入字符串数组,其中也可以有重复的字符串。还提供了一个输入数字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