广东外语外贸大学第16届程序设计竞赛A题

广东外语外贸大学第16届程序设计竞赛A 葱葱串

A 葱葱串

Description

聪哥在开发完lpoj后,甚是无聊,于是他决定再开发一个项目练手,但是这次他藏得很好,没有被任何人发现。聪明的你能找到聪哥的新项目吗?

Input

一个字符串,该字符串由大写和小写字母组成,字符串长度 <= 10^6

Output

最后一次出现的,仅由8个连续出现的大写字符组成的字符串

Sample Input 1

abcdERFGTYHTasdfQWERTYUIgggHHHHHHHHHq

Sample Output 1

QWERTYUI

思路

要求最后一次出现的仅八位连续大写字符组成的字符串。

“最后一次”——从输入字符串末尾开始扫

“八位”——设置一个计数器
当出现大写字符,计数器+1;
当出现小写字符,计数器清零。

“仅八位连续”——当达到计数器达到8时还不能停止,要判断多一个,即下一位是否是大写字符。
若下一位是大写字符,计数器清零,不满足仅仅连续的八个字符都是大写。
若下一位是小写字符,满足所有条件,可以直接跳出循环。

“输出满足条件的字符串”——因为是连续的,判断时记录字符串第一位或者最后一位的下标,连续输出8位即可。

代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
 string a;
 int num=0,k=-1;
 cin>>a;
 for(int i=a.length();i>=0;i--)
 {
  if(a[i]>='A' && a[i]<='Z')
  {
   if(num==0) k=i;
   num++;
   if(num>8) num=0;
  }
  else num=0;
  if(num==8 && (a[i-1]<'A' || a[i-1]>'Z') ) break;
 }
 if(num==8)
 {
  for(int i=k-7;i<=k-1;i++)
   cout<<a[i];
  cout<<a[k]<<endl;
 }
 return 0;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值