原题 [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;
}
}