链接:
1419. 数青蛙
题意:
给定一个字符串,每个入口会顺序读入c r o a k 读完一个以后才能读入下一个,求要有多少个入口才能读完这个字符串,非法输入输出-1
解:
一共五个字符,且不重复,直接数组存储,每次有croak完成时,数组里有temp种情况,就需要temp+1个入口,取最大值为ans(好像这次蓝桥杯国赛就有一道题和这个很像,但是那个里面字符有重复)
实际代码:
#include<iostream>
using namespace std;
int jsq[5];//croak
int minNumberOfFrogs(string croakOfFrogs)
{int lg=croakOfFrogs.length();int ans=0;for(int i=0;i<lg;i++){switch(croakOfFrogs[i]){case 'c':jsq[0]++;break;case 'r':if(jsq[0]){jsq[0]--;jsq[1]++;}else return -1;break;case 'o':if(jsq[1]){jsq[1]--;jsq[2]++;}else return -1;break;case 'a':if(jsq[2]){jsq[2]--;jsq[3]++;}else return -1;break;case 'k':if(jsq[3]){int temp=0;jsq[3]--;jsq[4]++;for(int j=0;j<4;j++) temp+=jsq[j];ans=max(ans,temp+1);}else return -1;break;}}for(int i=0;i<4;i++) if(jsq[i]) return -1;return ans;
}
int main()
{string s;cin>>s;int ans= minNumberOfFrogs(s);cout<<ans<<endl;return 0;
}
限制:
1 <= croakOfFrogs.length <= 105
- 字符串中的字符只有
'c'
,'r'
,'o'
,'a'
或者'k'