➤ Problem Link : 519D. A and B and Interesting Substrings
✅ C++ Solution :
#include<bits/stdc++.h> using namespace std; #define ll long long int struct node{ int arr[26]; node(){ memset(arr,0,sizeof(arr)); } }; int main() { int x[27]; for(int i=0;i<26;i++) cin>>x[i]; string s; cin>>s; unordered_map<ll,node> mp; ll curr=0; string t; ll cnt=0; for(int i=0;i<s.length();i++) { //cout<<curr<<endl; if(mp.find(curr)!=mp.end()) { // cout<<i<<" "<<curr<<endl; cnt+=mp[curr].arr[s[i]-'a']; } curr+=x[s[i]-'a']; mp[curr].arr[s[i]-'a']++; } cout<<cnt; }
Thank you for your patience reading. If you enjoyed this post, I’d be very grateful if you’d help it spread by emailing it to a friend, or sharing it on Whatsapp or Facebook.
😇Happy Learning!!