题目来源

字符串 APPAPT 中包含了两个单词 PAT,其中第一个 PAT 是第 2 位(P),第 4 位(A),第 6 位(T);第二个 PAT 是第 3 位(P),第 4 位(A),第 6 位(T)。

现给定字符串,问一共可以形成多少个 PAT

输入格式:

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

输出格式:

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

输入样例:

APPAPT

输出样例:

2

分析:

对于一个确定位置的A来说,形成PAT的个数,就相当于 A左边P的个数 与 A右边T的个数 的成绩

所有先遍历一次字符串,统计T的总个数。

第二次遍历字符串,遇到P,则countP++;遇到A,则countP * countT;遇到T则countT--

为什么要countT--?

遇到一个T,则说明这个T就位于后面的A的左边,不能与后面的A构成PAT

注意,得到的结果还要对1000000007取摸

 

C++实现

 #include <iostream>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <map>
#include <set>
#include <string>
#include <cctype>
#include <unordered_map>
using namespace std; int main()
{
string s;
int countT = ;
int countP = ;
int result = ;
int mod = ;
cin >> s;
int len = s.size(); for (int i = ; i < len; ++i)
{
if (s[i] == 'T')
{
countT++;
}
} for (int i = ; i < len; ++i)
{
if (s[i] == 'P')
{
countP++;
}
else if (s[i] == 'T')
{
countT--;
}
else if (s[i] == 'A')
{
result = (result + (countT * countP)) % mod;
}
}
cout << result;
return ;
}

最新文章

  1. Java多线程 3 线程同步
  2. MYSQL服务器my.cnf配置文档详解
  3. windows编程:资源和播放声音
  4. 【转载】经典SQL语句大全
  5. NEFU 2016省赛演练一 B题(递推)
  6. java专业规划(转载)
  7. Lucene基础(四)-- 结合数据库使用
  8. 【LeetCode with Python】 Rotate Image
  9. centos7安装redis3.0和phpredis扩展详细教程(图文)
  10. 【BZOJ 2844】: albus就是要第一个出场
  11. Python 常用模块大全(整理)
  12. webService-cxf框架的使用
  13. this与回调函数
  14. C/C++三目运算符
  15. python 全栈开发,Day32(知识回顾,网络编程基础)
  16. angular的subscribe
  17. swddude -- A SWD programmer for ARM Cortex microcontrollers.
  18. Java子类初始化调用父类无参构造
  19. Python发送带附件的邮件
  20. 王彪-20162321-Java程序设计与数据结构2nd-第十周学习总结

热门文章

  1. [ARM-Linux]Linux-MATLAB安装
  2. 页面嵌入iframe关于父子传参调用
  3. URL中出现了%E2%80%8E(Zero-Width Space)
  4. English--动名词
  5. CF1190E Tokitsukaze and Explosion 二分、贪心、倍增、ST表
  6. GoF的23种设计模式之行为型模式的特点和分类(1)
  7. c#NAudio 录音功能实现
  8. HDU2577 How to Type
  9. 关于springMVC中的路径问题
  10. pandas-19 DataFrame读取写入文件的方法