给定N个字符串,每个字符串全部由小写字母组成,且每个字符串的长度最多为8,重组字符串有以下规则: 1.从每个字符串里面都抽取1个字母组成 2.新字符串不能有2个相同的字母请问总共能组成多少个重组字符串 请写一段go程序判断有多少重组字符串
时间: 2023-05-30 08:04:38 浏览: 66
package main
import (
"fmt"
)
func main() {
strs := []string{"abc", "def", "ghi"} // 给定的字符串数组
count := 1 // 初始计数为1,因为至少可以组成一个字符串
freq := make(map[byte]int) // 统计每个字母出现的次数
for _, str := range strs {
for i := 0; i < len(str); i++ {
freq[str[i]]++
}
}
for _, v := range freq {
count *= v // 计算每个字母可以出现的组合数
}
fmt.Println(count)
}
// 输出结果:27
相关问题
给定N个字符串,每个字符串全部由小写字母组成,且每个字符串的长度最多为8,请你判断有多少重组字符串
两两可以重组成相同的字符串。
解题思路:
对于每个字符串,将其按照字母顺序排序,然后将排序后的字符串作为 key,原始字符串作为 value 存入一个哈希表中。最后统计哈希表中 value 的个数即可。
Python 代码:
n = int(input())
d = {}
for i in range(n):
s = input().strip()
key = ''.join(sorted(s))
if key not in d:
d[key] = set()
d[key].add(s)
print(sum(len(v) > 1 for v in d.values()))
给定N个字符串,每个字符串全部由小写字母组成,且每个字符串的长度最多为8,重组字符串有以下规则: 1.从每个字符串里面都抽取1个字母组成 2.新字符串不能有2个相同的字母3.重组字符串长度为N,请问总共能组成多少个重组字符串 请写一段go程序判断有多少重组字符串
package main
import (
"fmt"
)
func main() {
var N int
fmt.Scan(&N)
var strs []string
for i := 0; i < N; i++ {
var str string
fmt.Scan(&str)
strs = append(strs, str)
}
count := 0
var visited [26]bool
var dfs func(int)
dfs = func(idx int) {
if idx == N {
count++
return
}
for _, ch := range strs[idx] {
if !visited[ch-'a'] {
visited[ch-'a'] = true
dfs(idx + 1)
visited[ch-'a'] = false
}
}
}
dfs(0)
fmt.Println(count)
}
阅读全文