Special Subsequences "AG"
Problem Description
You have given a string A having Uppercase English letters. You have to find how many times subsequence "AG" is there in the given string.
NOTE: Return the answer modulo 109 + 7 as the answer can be very large.
Problem Constraints
1 <= length(A) <= 10^5
Input Format
First and only argument is a string A.
Output Format
Return an integer denoting the answer.
Example Input
Input 1:
A = "ABCGAG"
Input 2:
A = "GAB"
Example Output
Output 1:
3
Output 2:
0
Example Explanation
Explanation 1:
Subsequence "AG" is 3 times in given string
Explanation 2:
There is no subsequence "AG" in the given string.
Output
Java
public class Solution {
public int countAG(String A) {
int MOD = 1000000007;
int count = 0;
int countA = 0;
for (char c : A.toCharArray()) {
if (c == 'A') {
countA++;
} else if (c == 'G') {
count = (count + countA) % MOD;
}
}
return count;
}
}
Python
MOD = 10**9 + 7
def countAG(A):
count = 0
countA = 0
for c in A:
if c == 'A':
countA += 1
elif c == 'G':
count = (count + countA) % MOD
return count
JavaScript
function countAG(A) {
const MOD = 1000000007;
let count = 0;
let countA = 0;
for (let i = 0; i < A.length; i++) {
if (A[i] === 'A') {
countA++;
} else if (A[i] === 'G') {
count = (count + countA) % MOD;
}
}
return count;
}