Counting Strings

Alice got a message M. It is in an alien language. A string in an alien language is said to be valid if it contains the letter a or z. Alice decided to count the number of valid substrings of the message M. Help him to do this. Two substrings are different if it occurs at different positions in the message.

Example:

Input:  s = "azazaz"
Output: 21

Approach

Java

public class CountingStrings {
    public static void main(String[] args) {

        String s = "azazaz";

        long res = countingStrings(s);
        System.out.println(res);

    }

    static long countingStrings(String s) {
        long A[] = new long[s.length()];
        long pos = s.length();
        for (int i = s.length() - 1; i >= 0; i--) {
            if (s.charAt(i) == 'a' || s.charAt(i) == 'z')
                pos = i;
            A[i] = pos;
        }
        long ans = 0;
        for (int i = 0; i < s.length(); i++) {
            ans += s.length() - A[i];
        }
        return ans;
    }

}

C++

#include <bits/stdc++.h>
using namespace std;

long long countingStrings(string s)
{
    long long A[s.size()];
    long long pos = s.size();
    for (long long i = s.size() - 1i >= 0i--)
    {
        if (s[i] == 'a' || s[i] == 'z')
            pos = i;
        A[i] = pos;
    }
    long long ans = 0;
    for (long long i = 0i < s.size(); i++)
    {
        ans += s.size() - A[i];
    }
    return ans;
}
int main()
{

    string s = "azazaz";

    cout << countingStrings(s<< "\n";

    return 0;
}


No comments:

Post a Comment