不相同的字符串 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)
相关推荐
怕浪猫4 小时前
RAG 面试 6 连问,从原理到优化全部覆盖
python·算法·面试
无线通信科研笔记4 小时前
IEEE TVT 2026 论文精读与完整复现|相位误差如何重塑近场 RIS 的幅相响应
论文阅读·人工智能·python·算法·论文笔记
mmmmath_35 小时前
二叉树の递归遍历
算法
All for pursuit.6 小时前
【位运算-1】338.比特位计数
数据结构·c++·算法·leetcode
小师兄吃牛肉6 小时前
C语言中的nullptr有必要吗
c语言·c++·算法
一只小小的芙厨8 小时前
【线性DP】
学习·算法·动态规划
奋发向前wcx8 小时前
CSP-J复赛模拟赛5 王晨旭补题 2026.10.5
算法
罗湖老棍子10 小时前
C Looooops(信息学奥赛一本通- P1640)
算法·数论·同余·裴蜀定理·扩展欧几里得
飘尘12 小时前
从"算子"到"AI Infra":大模型背后看不见的那群人在忙什么
人工智能·算法·面试
夏幻灵13 小时前
每日一题:LeetCode 3:无重复字符的最长子串——滑动窗口思路详解
算法·leetcode·职场和发展