NC216130. 阴阳怪气的宿舍
描述
最近,阴阳怪气的风气开始在HL的宿舍盛行,无论哪个人说什么,其他人就会说:“不会吧?不会吧?不会有人......”;无论哪个人做什么,其他人就会说:“就这?就这?”
有一天,他们又在相互阴阳怪气了。
qh:“就这?”
sh:“就这?这也好意思说就这?”。
hl:“不会吧?不会有人这就开始阴阳怪气了吧?”
xx:“不会吧?不会有人阴阳怪气别人阴阳怪气吧?”
kt:“不会吧?不会有人说话总是阴阳怪气吧?”
大家都看向了kt,他们突然都很想知道,平时是谁阴阳怪气的话说得最多,于是他们拿出了寝室录音机.....
录音机的内容是5个只包含小写字母的字符串,分别表示qh,hl,sh,xx,kt平时说的话,现在他们想让你帮忙统计一下每个人说的话中,“buhuiba”和“jiuzhe”这两个子串的个数,并告诉他们谁阴阳怪气的话说的最多。
提示:字符串中任意个连续的字符组成的子序列称为该串的子串,如bcd是abcde的子串,而ace不是。
输入描述
Input:
输入有5行,每行一个长度不超过1000的字符串,仅由小写字母组成,每个字符串分别按顺序代表qh,sh,hl,xx,kt说的话。
输出描述
Output:
输出包含6行,前5行每行输出qh,sh,hl,xx,kt话中”buhuiba”和”jiuzhe”的个数,以空格分隔,第6行输出说阴阳怪气的话数量最多的人的名字,如果有多个人数量一样,则输出”yygqdss”。
示例1
输入:
buhuibabuhuiba jiuzhe buhuibajiuzhe jiuzhejiuzhebuhuiba abaaba
输出:
qh 2 0 sh 0 1 hl 1 1 xx 1 2 kt 0 0 xx
C++(clang++11) 解法, 执行用时: 4ms, 内存消耗: 376K, 提交时间: 2021-01-01 13:39:32
#include<bits/stdc++.h> using namespace std; string s, maxname, name[] = {"qh", "sh", "hl", "xx", "kt"}; int a, b, maxx, pos = 0; vector<int>vt; int main() { for(int i = 0; i < 5; i++) { cin >> s; for(a = 0, pos = 0; (pos=s.find("buhuiba", pos)) != -1; a++, pos++); for(b = 0, pos = 0; (pos=s.find("jiuzhe", pos)) != -1; b++, pos++); cout << name[i] << " " << a << " " << b << "\n"; vt.push_back(a+b); if(a + b > maxx) { maxx = a + b; maxname = name[i]; } } cout << (count(vt.begin(), vt.end(), maxx) > 1 ? "yygqdss" : maxname); }
pypy3 解法, 执行用时: 122ms, 内存消耗: 26244K, 提交时间: 2021-12-20 15:53:37
name = [ "qh" , "sh" , "hl" , "xx" , "kt" ] val = [] flag = 0 res = "" resval = 0 for i in range( 0 , 5 ): s = input() a = s.count("buhuiba") b = s.count("jiuzhe") print( "{} {} {}".format( name[i] , a , b ) ) if a + b > resval: res = name[i] resval = a + b flag = 0 elif a + b == resval: flag = 1 if flag: print( "yygqdss" ) else : print( res )
Python3(3.9) 解法, 执行用时: 19ms, 内存消耗: 2812K, 提交时间: 2021-01-01 22:36:16
l=[] c=0 N=['qh', 'sh', 'hl', 'xx', 'kt'] for i in range(5): s=input() a=s.count("buhuiba") b=s.count("jiuzhe") l.append(a+b) if a+b>c: c=a+b n=N[i] print(N[i], a, b) print("yygqdss"if(l.count(c)>1)else n)