1040. 有几个PAT
来源:互联网 发布:顺丰淘宝合作价格表 编辑:程序博客网 时间:2024/04/29 00:12
场景
- 使用 C++、Python 解决 PAT . 1040。即,求字符 ‘A’ 左侧 ‘P’的个数与右侧 ‘T’ 的个数积的累加和。
- 字符 ‘A’ 左侧无 ‘P’ 或 右侧 无 ‘T’,则积为 0。
- 思路确定后,很快搞定代码,提交后竟然“编译错误”,Orz!恶心地忘记加命名空间了!
using namespace std;
思路
- 字符串中字符 ‘A’,左右侧 ‘P’、’T’ 个数均不为0,即为有效。
- 计算结果为:
- 字符串中 不同字符’A’ 左侧 ‘P’ 个数与右侧 ‘T’ 个数的乘积和。
问题描述
1040. 有几个PAT(25)
字符串 APPAPT 中包含了两个单词“PAT”,其中第一个PAT是第 2 位( P ), 第 4 位( A ), 第 6 位( T );第二个PAT是第 3 位( P ), 第 4 位( A ), 第 6 位( T )。
现给定字符串,问一共可以形成多少个PAT ?
输入格式:
输入只有一行,包含一个字符串,长度不超过105,只包含P、A、T三种字母。
输出格式:
在一行中输出给定字符串中包含多少个PAT。由于结果可能比较大,只输出对1000000007取余数的结果。
输入样例:
APPAPT
输出样例:
2
代码片 1 ( C++ )
- 单层循环计数字符 ‘T’ , 构思巧妙。
#include <iostream> #include <string>//#include <cstdio>using namespace std;int main() { string s; cin >> s; int len=s.length(),coutp=0,coutt=0,result=0; for(int i=0; i<len; i++) { if (s[i]=='T') coutt++; } for(int j=0; j<len; j++) { if (s[j]=='P') coutp++; if (s[j]=='T') coutt--; if (s[j]=='A') result=(result+(coutp*coutt)%1000000007)%1000000007; } cout << result; // printf("%d",res); return 0;}
代码片 2 ( Python )
strs=input()result=0for i in range(len(strs)): if strs[i] == 'A': result=(result + (strs[:i].count('P')*strs[i:].count('T'))%1000000007)%1000000007print (result)
参考
- C++ 分析详细(大牛)
PS :
- 唉,Python狗们,还是尽量争取C++吧。毕竟大多数考场(PAT考试)不给支持 Python 环境啊,,,
- 最近,真心感觉到算法的强大!越来越感觉自己大学错过了很多美好的东西,呜呜 … ┭┮﹏┭┮
- 很多时候深入研究些东西有种妙不可言的赶脚! 祝 Lucky .
阅读全文
0 0
- PAT 1040. 有几个PAT
- PAT 1040.有几个PAT
- pat 1040. 有几个PAT
- 1040. 有几个PAT
- 1040. 有几个PAT
- 1040. 有几个PAT
- 1040. 有几个PAT
- 1040. 有几个PAT
- 1040. 有几个PAT
- PAT.1040.有几个PATA
- 【PAT】1040. 有几个PAT(25)
- PAT (Basic Level)1040. 有几个PAT
- PAT-B 1040. 有几个PAT
- PAT-B 1040. 有几个PAT
- PAT-1040. 有几个PAT(25)
- [PAT-乙级]1040.有几个PAT
- 1040. 有几个PAT(25) PAT
- pat:1040. 有几个PAT(25)
- 2017年12月3日训练笔记
- 操作系统学习之路01
- js怎么获取路径后面带过来的参数?
- 高通的专利收费模式现状
- spring boot 配置fastjson解析json
- 1040. 有几个PAT
- epoll以及ET、LT模式
- jQuery学习笔记(一)
- 基础练习 FJ的字符串
- Autofac官方文档(十二)【实例范围】
- Kali自动调节屏幕大小
- URL 设计常识
- 通过Node.js运行TiddlyWiki5
- js-----闭包浅谈(Closure)