博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Topcoder SRM 627 div1 HappyLettersDiv1 : 字符串
阅读量:6969 次
发布时间:2019-06-27

本文共 2805 字,大约阅读时间需要 9 分钟。

Problem Statement

    

The Happy Letter game is played as follows: At the beginning, several players enter the field. Each player has a lowercase English letter on their back. The game is played in turns. In each turn, you select two players with different letters, and both selected players leave the field. The game ends once it is impossible to take another turn.

If there are some players left in the field at the end of the game, they must all have the same letter. That letter is called the winning letter. If there are no players left in the field at the end of the game, there is no winning letter.

You are given a string letters. The characters in letters are the characters carried by the players at the beginning of the game. Return a string with all possible winning letters. The letters in the returned string must be sorted in increasing order.

Definition

    
Class: HappyLetterDiv1
Method: getHappyLetters
Parameters: string
Returns: string
Method signature: string getHappyLetters(string letters)
(be sure your method is public)

Limits

    
Time limit (s): 2.000
Memory limit (MB): 256

Notes

- If there's no happy letter, return the empty string.

Constraints

- letters will contain between 1 and 50 elements.
- Each element of letters will be a lowercase English letter ('a'-'z').

Examples

0)  
    
"aabbacccc"
Returns: "abc"
Each of the three letters can be the winning letter. Here is one possibility how 'a' can be the winning letter: Let's number the players 0 through 8 in the order in which they appear in the input. We can then play the game as follows:
  • Send away players 1 ('a') and 8 ('c').
  • Send away players 2 ('b') and 6 ('c').
  • Send away players 7 ('c') and 0 ('a').
  • Send away players 5 ('c') and 3 ('b').
  • The only player left is player 4 ('a'), hence 'a' is the winning letter.
1)  
    
"aaaaaaaccdd"
Returns: "a"
Only letter 'a' can win.
2)  
    
"ddabccadb"
Returns: "abcd"
 
3)  
    
"aaabbb"
Returns: ""
No letter can win.
4)  
    
"rdokcogscosn"
Returns: "cos"
 

 

Mean:

 

给你一个只有小写字母组成的字符串,每一轮你可以选择两个不相同的字符删去,如果最后还有剩下的字符,那么这个字符就是winning letter,现在要你返回可能是winning letter的字符组成的字符串,并按照升序排序。

 

 

analyse:

 

我们首先将每个字母出现的次数统计一遍,然后就是对26个小写字母进行判断,如果不包括本身,最多数量的那个字符的数量大于剩余字符的数量,说明不可能满足题目的要求(不同的字符相互匹配),否则就符合题目要求,加入ans字符串即可。

 

 

Time complexity:O(n)

 

Source code:

 

// BEGIN CUT HERE// END CUT HERE#line 5 "HappyLetterDiv1.cpp"//Memory   Time//  K      MS#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define MAX 1100#define LL long longusing namespace std;class HappyLetterDiv1 { public: string getHappyLetters(string letters) { string ans; ans.clear(); int len=letters.size(); int cnt[30]={0}; for(int i=0;i

  

转载于:https://www.cnblogs.com/crazyacking/p/3909062.html

你可能感兴趣的文章
node path.resolve()
查看>>
关于 多个git用户或多个git管理工具切换时出现的问题总结
查看>>
Sqli-labs less 15
查看>>
Mutation Testing(变异测试)
查看>>
HADOOP实践101:在Hadoop集群中添加机器和删除机器
查看>>
LOJ 10160 - 「一本通 5.2 练习 3」周年纪念晚会 / 没有上司的晚会
查看>>
File Zilla连接Ubuntu 失败
查看>>
Javassist 使用,动态生成类,动态代理
查看>>
tomcat 内存溢出
查看>>
第一次 作业 workcount (基础功能实现)
查看>>
【1】今天开始学习python
查看>>
实用字符串函数
查看>>
java中使用 正则 抓取邮箱
查看>>
centos7没有killall命令
查看>>
@angular/cli项目构建--httpClient
查看>>
如何测试Nginx的高性能
查看>>
光棍节游戏
查看>>
java线程之一 单线程
查看>>
node学习笔记
查看>>
ts 使用Visual Studio2012和TFS网站管理源代码
查看>>