原题 [UVaoj 1585 score]
题目翻译
- 给出 T T T 个由 " O O O " 和 " X X X " 组成的字符串 s s s ( 0 < ∣ s ∣ < 80 0<|s|<80 0<∣s∣<80 ),统计每个字符串的得分:每个 " O O O " 的得分为目前连续出现 " O O O " 的个数," X X X " 不得分。
题目分析
-
这是一道非常水的字符串题,秒掉! -
对于每个字符串 s s s,设分数为 s c sc sc,目前连续出现 " O O O " 的个数为 a a a 。
-
遍历 s s s:若 s [ i ] = s[i]= s[i]= " O O O ",则
a++,sc += a;若 s [ i ] = s[i]= s[i]= " X X X ",则a = 0(重置)。 -
输出 s c sc sc 即可。
AC代码
#include<iostream>
#include<string.h>
using namespace std;
int main()
{
int T;
cin>>T;
while(T--)
{
string s;
cin>>s;
int sc = 0, a = 0; // sc:分数 a:目前连续出现"O"的个数
for(int i = 0; i < s.length(); i++)
{
if(s[i] == 'O') sc += (++a); // O
else a = 0; // X
}
cout<<sc<<endl;
}
}

本文介绍了一道简单的字符串处理题UVaoj1585score的解题思路与实现方法。题目要求统计由OOO和XXX组成的字符串中每个OOO的得分,得分等于连续出现的OOO数量。通过遍历字符串并使用两个变量记录当前得分和连续OOO的数量,实现了高效求解。
2194

被折叠的 条评论
为什么被折叠?



