PAT乙 1040 有几个PAT (GO)
解题思路:
- 先一次循环找出T的数量
- 再次遍历,记录P的数量,如果中间出现了A,那么这时候能够组成PAT的数量为A前面的P*末尾的T,如果出现T则T=T-1
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
var countT, countP int
var result int
var inputReader *bufio.Reader
inputReader = bufio.NewReader(os.Stdin)
str,_ := inputReader.ReadString('\n')
length := len(str)
for i:=0; i<length-1; i++ {
if str[i] == 'T' {
countT++
}
}
for i:=0; i<length-1; i++ {
if str[i] == 'P' {
countP++
}
if str[i] == 'A' {
result = (result + (countP * countT) % 1000000007) % 1000000007
}
if str[i] == 'T' {
countT--
}
}
fmt.Println(result)
}