PAT-B 1040 有几个PAT(C语言)

题目

链接:PAT (Basic Level) Practice 1040 有几个PAT

字符串APPAPT中包含了两个单词PAT,其中第一个PAT是第 2 位(P),第 4 位(A),第 6 位(T);第二个 PAT 是第 3 位(P),第 4 位(A),第 6 位(T)。
现给定字符串,问一共可以形成多少个 PAT

输入格式:

输入只有一行,包含一个字符串,长度不超过​​ ,只包含 PAT 三种字母。

输出格式:

在一行中输出给定字符串中包含多少个 PAT。由于结果可能比较大,只输出对1000000007 取余数的结果。

输入样例:

APPAPT

输出样例:

2


思路

PAT的个数就是每个字母A左端P的个数与右边T的个数的乘积的和。


代码

#include
#include
int main()
{
  
  char c[100001];
  long long sum = 0;
  int countp = 0;
  int countt = 0;
  scanf("%s", c);

  //得到T的个数
  for(int i = 0; i < strlen(c); i++){
    if(c[i] == 'T'){
      countt++;
    }
  }
  
  for(int i = 0; i < strlen(c); i++){
    if(c[i] == 'P'){          //左端字母P的个数
      countp++;
    }
    else if(c[i] == 'T'){    //右端字母T的个数
      countt--;
    }
    else if(c[i] == 'A'){
      sum += countp * countt;
    }
  }
  

  printf("%lld", sum % 1000000007);
  return 0;
}


---END---

其他相关题目

PAT-B 1036 跟奥巴马一起编程(C语言)
PAT-B 1037 在霍格沃茨找零钱(C语言)
PAT-B 1038 统计同成绩学生(C语言)
PAT-B 1039 到底买不买(C语言)

你可能感兴趣的:(PAT-B 1040 有几个PAT(C语言))