不相同的字符串 acm模式刷题

题目描述

给定一个只包含小写字母的字符串,每次操作可以将两个相同的字母删除,然后在字符串的末尾新增任意一个小写字母。请问最少需要多少次操作,才能使字符串中所有的字母都不相同。
输入描述

第一行是一个整数 N,表示后续会有 N 个字符串,每个字符串占一行。
输出描述

对于输入的每一个字符串,你需要输出该字符串所需的最少操作次数,每个输出占一行。
输入示例

1
abab

输出示例

2

解题思路: 1.贪心算法 2.通过构造大小为26的列表,记录字符串中不同字符出现的次数,循环字典,更新出现次数最多的字符的数量和次数出现最少的字符的数量,直至列表中不存在数量大于1,则退出循环。

python 复制代码
def CountString(strings):
    letter_count = [0]*26
    for j in strings:
       letter_count[ord(j) - 97] += 1
    count = 0
    while(max(letter_count) > 1):
        for x in range(26):
            if letter_count[x] > 1:
                letter_count[x] -= 2
                count += 1
                break
        min_letter = min(letter_count)
        for y in range(26):
            if min_letter == letter_count[y]:
                letter_count[y] += 1
                break
    return count
if __name__ == "__main__":
	n = input().split()
	n = int(n[0])
	for i in range(n):
	    string = input()
	    num = CountString(string)
	    print(num)
相关推荐
刚学HTML1 小时前
leetcode 05 回文字符串
算法·leetcode
AC使者1 小时前
#B1630. 数字走向4
算法
冠位观测者1 小时前
【Leetcode 每日一题】2545. 根据第 K 场考试的分数排序
数据结构·算法·leetcode
古希腊掌管学习的神2 小时前
[搜广推]王树森推荐系统笔记——曝光过滤 & Bloom Filter
算法·推荐算法
qystca2 小时前
洛谷 P1706 全排列问题 C语言
算法
浊酒南街2 小时前
决策树(理论知识1)
算法·决策树·机器学习
就爱学编程2 小时前
重生之我在异世界学编程之C语言小项目:通讯录
c语言·开发语言·数据结构·算法
学术头条3 小时前
清华、智谱团队:探索 RLHF 的 scaling laws
人工智能·深度学习·算法·机器学习·语言模型·计算语言学
Schwertlilien3 小时前
图像处理-Ch4-频率域处理
算法
IT猿手3 小时前
最新高性能多目标优化算法:多目标麋鹿优化算法(MOEHO)求解TP1-TP10及工程应用---盘式制动器设计,提供完整MATLAB代码
开发语言·深度学习·算法·机器学习·matlab·多目标算法