Description
给出n个由T,I和O组成的字符串,长度小于50,统计所有字符串的得分和,每个O的得分为目前连续出现的O的个数,每个I得两分而且不累计,T的得分为0分。
例如:OTITOOOTITOIIT的得分为1+0+2+0+1+2+3+0+2+0+1+2+2+0=16分
Input
一个数n,表示有n组数据
接下来n行,每行一个字符串
Output
n行,每行为字符串的得分
Sample Input
1
OTITOOOTITOIIT
Sample Output
16
AC代码:
#include <stdio.h>
#define MAXSIZE 50
int count(char a[],int sum){
int i,score = 0;
int k[MAXSIZE] = {-1},j = 0,t = 1;
for(i = 0;i < sum;i++){
if(a[i] == 'O')
k[j++] = i;
if(a[i] == 'T'){}
if(a[i] == 'I')
score += 2;
}
for(i = 0;i < j;i++){
if(i == 0){
score += t;
continue;
}
if(k[i] == k[i - 1] + 1){
t++;
score += t;
}
if(k[i] != (k[i - 1] + 1)){
t = 1;
score += t;
}
}
return score;
}
int main()
{
int N,i;
char a[MAXSIZE];
scanf("%d",&N);
while(N--){
scanf("%s",a);
for(i = 0;a[i] != '\0';i++){}
printf("%d\n",count(a,i+1));
}
return 0;
}