【牛客 - 289 I】这是一个沙雕题I (字符串问题,水题)
生活随笔
收集整理的這篇文章主要介紹了
【牛客 - 289 I】这是一个沙雕题I (字符串问题,水题)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題干:
因為毒瘤出題人出的題都太難了,于是gugugu打算出一個簽到題,(就是這題啦),這題很簡單,給定一個字符串,請問你重新排序后能不能組成K個相同的字符串。
輸入描述:
多組數據輸入,第一行輸入k表示需要k個相同的字符串個數,第二行給出指定的字符串s。字符串長度l (1≤ k ≤ l ≤ 100)輸入的字符串僅由小寫字母組成輸出描述:
對于每組數據輸出一行:
如果能組成k個相同的字符串,就輸出重新組合后的字符串,(輸出重復子串字典序最小的那一組),否則輸出-1
?
暖心學長Hang怕你們不懂字典序,所以
字典序:
字典序比較大小的方式就是,從第一位逐位比較,如果這一位不相等,那么肯定有大小之分,大的就大,小的就小,如果相同,找下一位,和字符串長度沒有關系,只有s1的全部字符都和s2的前strlen(s1)位都相等的情況,s2更長,所以更大
如:aaa>aa,abc>aaaa,ad>abcd
示例1
輸入
復制
2 abba輸出
復制
abab解題報告:
? ? 水題,,留給新生了。
AC代碼:
#include<cstdio> #include<iostream> #include<algorithm> #include<queue> #include<map> #include<vector> #include<set> #include<string> #include<cmath> #include<cstring> #define ll long long #define pb push_back #define pm make_pair #define fi first #define se second using namespace std; const int MAX = 2e5 + 5; char s[MAX]; int bk[204]; int main() {int k;while(cin>>k) {memset(bk,0,sizeof bk);int flag = 1;scanf("%s",s+1);int len = strlen(s+1);for(int i = 1; i<=len; i++) {bk[s[i]]++;}for(int i = 'a'; i<='z'; i++) {if(bk[i]!=0 && (bk[i]%k) != 0) {flag = 0;}}if(flag == 0) puts("-1");else {for(int i = 1; i<=k; i++) {for(int j = 'a'; j<='z'; j++) {if(bk[j]!=0) {for(int q = 1; q<=bk[j]/k; q++)putchar(j);}}}puts("");}}return 0 ;}?
總結
以上是生活随笔為你收集整理的【牛客 - 289 I】这是一个沙雕题I (字符串问题,水题)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 国债逆回购什么时候收益比较高?什么时候买
- 下一篇: 常见的互联网金融骗局有哪些?互联网金融骗