电信L2-python考题1-完美字符串

该博客探讨了一个编程问题,即如何计算使一组字符串成为完美字符串所需的最少插入字符数。完美字符串要求相邻字符串不相等。给出了一个Python代码示例,处理了3个输入字符串,并输出了每个字符串变成完美字符串的长度。问题涉及字符串处理和算法设计。

    
    题目1:完美字符串
1,输入数字N
2,然后有n行输入,输入字符串
3,相邻的字符串不应该相等,请问,这输入的n行字符串需要插入几个字符才能成为完美字符串,输入各字符串变成完成完美字符串的长度 

N=int(input())
s_list=[]
s_num=[]
for i in range(N):
    t=input()
    s_list.append(t)
    s_num.append(len(t))

s_num_mei=[]
for i in range(N):
    count=0
    for m in range(s_num[i]-1):
        if s_list[i][m]==s_list[i][m+1]:
            count=count+1
    s_num_mei.append(s_num[i]+count)
for i in s_num_mei:
    print(i)
                
#aabbcc
#aaabbc
#adbcde       
                  

            

3
aabbcc
aaabbc
adbcde
9
9
6
### L2-002 Python 问题解决方案 对于L2-002类别的Python编程挑战,通常涉及较为复杂的算法设计或数据处理逻辑。虽然具体题目未提供,但从常见的PAT (Programming Ability Test) 题目模式来看,这类问题往往围绕着特定的数据结构操作、字符串处理或是复杂度较高的算法应用展开。 针对可能的L2-002级别问题,假设其核心在于高效地统计并排序一组输入数据中的频率分布情况,类似于引用中提到的一个实例[^2]: #### 实现思路 为了应对这一需求,可以构建一个字典来记录每种不同元素出现次数,并最终按照指定规则对这些键值对进行排序输出。下面给出了一段简化版代码用于说明如何实现这样的功能: ```python from collections import Counter import sys def process_input(): lines = [] while True: try: line = input() if not line: break lines.append(line) except EOFError: break return lines data_points = [tuple(map(int, item.split())) for item in process_input()] frequency_distribution = Counter(data_points) sorted_result = sorted(frequency_distribution.items(), key=lambda pair: (-pair[1], pair[0])) print(len(sorted_result)) for freq, point in sorted_result: print(freq, *point) ``` 此段程序首先读取多行标准输入直到遇到空白行为止;接着将每一行转换成整数元组形式存入列表`data_points`内;之后借助于`collections.Counter`快速计算各唯一项的数量;最后通过自定义比较函数完成降序排列的同时保持相同频次下按自然顺序升序展示的要求。 #### 关键点解析 - 使用 `Counter` 类型能够极大简化计数过程。 - 排序时采用复合条件:先依据频率高低逆向排序(-pair\[1\]),再基于原始数值正向稳定排序(pair\[0\])。 - 输出部分特别注意格式化细节以满足严格要求。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值