第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

打印兩個字符串中相同且出現(xiàn)在相同位置的字符數(shù)

打印兩個字符串中相同且出現(xiàn)在相同位置的字符數(shù)

Go
蠱毒傳說 2022-09-05 17:23:51
例如,如果“abacdead”和“adcbadedga”是兩個字符串,那么我們需要打印相同的位置和不同的位置。    same pos count: 2    diff pos count: 5如果我們使用循環(huán)均值,一個(第一個字母)將檢查所有字符(字符串2),因此循環(huán)將運行超過140次,這里我們?nèi)绾螌崿F(xiàn)O(n)。如果我們有任何數(shù)據(jù)結(jié)構(gòu),請建議我解決這個問題。示例代碼   func Test(a, b string) {    r := make([]map[string]interface{}, 0)    for i := 0; i < len(a); i++ {        for j := 0; j < len(b); j++ {            if string(a[i]) == string(b[j]) {                r = append(r, map[string]interface{}{                    "position": i,                    "char":     string(a[i]),                })            }                    }    }}
查看完整描述

1 回答

?
慕森王

TA貢獻1777條經(jīng)驗 獲得超3個贊

您實際上只需要相同位置的字符計數(shù),以及每個字符串中每個字符的總計數(shù)。然后對每個字符的最小計數(shù)求和,并在同一位置減去該計數(shù)。


https://play.golang.org/p/pknsVfZ1ZbM


package main


import (

  "fmt"

  "math"

)


func main() {

  a := []rune("abacdead")

  b := []rune("adcbadedga")

  same := 0

  chars := make(map[rune][]int)

  for i := 0; i < len(a); i++ {

      if i < len(b) && a[i] == b[i] {

          same++

      }

      if _, ok := chars[a[i]]; !ok {

          chars[a[i]] = []int{0, 0}

      }

      chars[a[i]][0]++

  }

  for i := 0; i < len(b); i++ {

      if _, ok := chars[b[i]]; !ok {

          chars[b[i]] = []int{0, 0}

      }

      chars[b[i]][1]++

  }


  different := -same

  for char, vals := range chars {

      fmt.Println(string(char), vals[0], vals[1])

      different += int(math.Min(float64(vals[0]), float64(vals[1])))

  }

  fmt.Println("Same: ", same, "Different: ", different)

}

需要注意的是,總數(shù)與您所說的不一致:


"abacdead"

"adcbadedga"

相同的位置,我們有第一個和最后一個,如果我們刪除它們:ad


"bacdea"

"dcbadega"

,然后排序


"aabcde"

"aabcddeg"

然后我們刪除不匹配的字母


"aabcde"

"aabcde"

我們應(yīng)該在不同的位置有六個相同的字符。


查看完整回答
反對 回復 2022-09-05
  • 1 回答
  • 0 關(guān)注
  • 144 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號