hiho一下,第165周 题目1 : 分隔相同字符
来源:互联网 发布:象棋软件排行 编辑:程序博客网 时间:2024/05/29 18:40
题目1 : 分隔相同字符
时间限制:10000ms
单点时限:1000ms
内存限制:256MB
- 样例输入
aaabc
- 样例输出
abaca
描述
给定一个只包含小写字母'a'-'z'的字符串 S ,你需要将 S 中的字符重新排序,使得任意两个相同的字符不连在一起。
如果有多个重排后字符串满足条件,输出字典序最小的一个。
如果不存在满足条件的字符串,输出INVALID。
输入
字符串S。(1 ≤ |S| ≤ 100000)
输出
输出字典序最小的答案或者INVALID。
#!/usr/bin/env python# -*- coding: utf-8 -*-from collections import defaultdictdef get_string_info(string):Dict = defaultdict(lambda: 0)for i in string:Dict[i] += 1return Dictdef sort_string(Dict):key_list = sorted(Dict.keys())value_list = [Dict[i] for i in key_list]sum_value = sum(value_list)add_index = 0string_list = ['']while True:for index, i in enumerate(value_list):if i * 2 > sum_value:add_index = indexbreakif string_list[-1] != key_list[add_index]:string_list.append(key_list[add_index])value_list[add_index] -= 1if not value_list[add_index]:del key_list[add_index]del value_list[add_index]add_index = 1if not value_list:breaksum_value -= 1if not add_index:add_index = 1else:add_index = 0else:return "INVALID"return ''.join(string_list)def main(): string = raw_input() Dict = get_string_info(string) print sort_string(Dict)if __name__ == "__main__":main()
阅读全文
0 0
- hiho一下,第165周 题目1 : 分隔相同字符
- 分隔相同字符 hiho一下第165周
- Hihocoder hiho一下 第141周 题目1 : 自行车架
- hiho一下,第163周 题目1 : 希尔伯特曲线
- hiho一下,第164周 题目1 : 有序01字符串
- hiho一下 第173周 题目1 : A Game 【区间dp】
- hiho一下 第143周 hiho密码
- hiho一下 第141周
- hiho一下 第139周
- hiho一下第143周
- hiho一下 第145周
- hiho一下 第167周
- hiho一下 第175周
- hiho一下 第174周
- hiho一下 第四十九周 -题目1 : 欧拉路·一
- hiho一下 第五十九周 题目1 : Performance Log
- hiho一下 第六十二周题目1 : Browser Caching
- hiho一下 第六十九周 题目1 : HIHO Drinking Game 二分
- Java GUI:图形用户界面三剑客相比拼
- Q:前端canvas标签的内容传递到后台保存为图片时出现无法正常显示的问题
- Python之常见问题和常见注意事项
- 基本数据结构:栈(stack)
- Android音频驱动-ASOC之PCM Open
- hiho一下,第165周 题目1 : 分隔相同字符
- VLC全部参数,libvlc_new函数参数,VLC SDK开发
- 大规模知识图谱的构建
- html学习12-内容丰富—图像
- esplorer v0.2.0 中文版
- (lintcode)第13题字符串的查找
- In function `lcd_draw_circle': lcd.c:(.text+0x2d8): undefined reference to `__aeabi_idiv' lcd
- 程序员的自我修养3
- GC(Java的垃圾回收机制)