华为OD统一考试 - 字符串拼接
题目描述
给定 M(0 < M ≤ 30)个字符(a-z),从中取出任意字符(每个字符只能用一次)拼接成长度为 N(0 < N ≤ 5)的字符串,
要求相同的字符不能相邻,计算出给定的字符列表能拼接出多少种满足条件的字符串,
输入非法或者无法拼接出满足条件的字符串则返回0。
输入描述
给定的字符列表和结果字符串长度,中间使用空格(" ")拼接
输出描述
满足条件的字符串个数
用例
输入 |
abc 1 |
输出 |
3 |
说明 |
给定的字符为a,b,c,结果字符串长度为1,可以拼接成a,b,c,共3种 |
输入 |
dde 2 |
输出 |
2 |
说明 |
给定的字符为dde,结果字符串长度为2,可以拼接成de,ed,共2种 |
题目解析
根据用例2的说明来看,本题是要求解的是:不重复的指定长度的排列。且本题还增加了一个条件,即排列中相邻元素不能相同。
import Foundation func ODTest_2_34() { print("输入描述") print("给定的字符列表和结果字符串长度,中间使用空格") let SN = (readLine() ?? "").split(separator: " ").map { String($0) } var s = SN[0].map { $0 } let n = Int(SN[1]) ?? 0 print("输出描述") print("满足条件的字符串个数") print("\(getResult())") func getResult() -> Int { if s.count < n { // 无法拼接出满足条件的字符串 return 0 } for c in s { // 输入非法 if c < "a" || c > "z" { return 0
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
2024华为OD机试卷题 文章被收录于专栏
本专栏给大家提供了华为2024最新华为OD 题目汇总。华为OD机试刷题记录机考算法题库,帮助你上岸华为。提供C++/Java、JavaScript、Python四种语言的解法。