Count occurrences of strings formed using words in another string Last Updated : 24 Jan, 2022 Comments Improve Suggest changes Like Article Like Report Given a string A and a vector of strings B, the task is to count the number of strings in vector B that only contains the words from A. Examples: Input: A="blue green red yellow"B[]={"blue red", "green pink", "yellow green"}Output: 2 Input: A="apple banana pear"B[]={"apple", "banana apple", "pear banana"}Output: 3 Approach: Follow the below steps to solve this problem: Extract all the words of string A and store them in a set, say st.Now traverse on each string in vector B, and get all the words in that string.Now check that if all words are present in st, then increment ans by 1.Return ans as the solution to the problem. Below is the implementation of the above approach: C++ // C++ code for the above approach #include <bits/stdc++.h> using namespace std; // Function to extract all words from a string vector<string> getWords(string A) { vector<string> words; string t; for (int i = 0; i < A.size(); i++) { // If the character is a space if (A[i] == ' ') { if (t.size() > 0) { words.push_back(t); } t = ""; } // Else else { t += A[i]; } } // Last word if (t.size() > 0) { words.push_back(t); } return words; } // Function to count the number of strings in B // that only contains the words from A int countStrings(string A, vector<string>& B) { unordered_set<string> st; vector<string> words; words = getWords(A); for (auto x : words) { st.insert(x); } // Variable to store the final answer int ans = 0; for (auto x : B) { words = getWords(x); bool flag = 0; for (auto y : words) { if (st.find(y) == st.end()) { flag = 1; break; } } // If all the words are in set st if (!flag) { ans++; } } return ans; } // Driver Code int main() { string A = "blue green red yellow"; vector<string> B = { "blue red", "green pink", "yellow green" }; cout << countStrings(A, B); } Java // Java code for the above approach import java.util.*; class GFG { // Function to extract all words from a String static Vector<String> getWords(String A) { Vector<String> words = new Vector<String>(); String t=""; for (int i = 0; i < A.length(); i++) { // If the character is a space if (A.charAt(i) == ' ') { if (t.length() > 0) { words.add(t); } t = ""; } // Else else { t += A.charAt(i); } } // Last word if (t.length() > 0) { words.add(t); } return words; } // Function to count the number of Strings in B // that only contains the words from A static int countStrings(String A, String[] B) { HashSet<String> st = new HashSet<>(); Vector<String> words = new Vector<String>(); words = getWords(A); for (String x : words) { st.add(x); } // Variable to store the final answer int ans = 0; for (String x : B) { words = getWords(x); boolean flag = false; for (String y : words) { if (!st.contains(y)) { flag = true; break; } } // If all the words are in set st if (!flag) { ans++; } } return ans; } // Driver Code public static void main(String[] args) { String A = "blue green red yellow"; String []B = { "blue red", "green pink", "yellow green" }; System.out.print(countStrings(A, B)); } } // This code is contributed by 29AjayKumar Python3 # Python 3 code for the above approach # Function to extract all words from a string def getWords(A): words = [] t = "" for i in range(len(A)): # If the character is a space if (A[i] == ' '): if (len(t) > 0): words.append(t) t = "" # Else else: t += A[i] # Last word if (len(t) > 0): words.append(t) return words # Function to count the number of strings in B # that only contains the words from A def countStrings(A, B): st = set([]) words = [] words = getWords(A) for x in words: st.add(x) # Variable to store the final answer ans = 0 for x in B: words = getWords(x) flag = 0 for y in words: if (y not in st): flag = 1 break # If all the words are in set st if (not flag): ans += 1 return ans # Driver Code if __name__ == "__main__": A = "blue green red yellow" B = ["blue red", "green pink", "yellow green"] print(countStrings(A, B)) # This code is contributed by ukasp. C# // C# code for the above approach using System; using System.Collections.Generic; public class GFG { // Function to extract all words from a String static List<String> getWords(String A) { List<String> words = new List<String>(); String t=""; for (int i = 0; i < A.Length; i++) { // If the character is a space if (A[i] == ' ') { if (t.Length > 0) { words.Add(t); } t = ""; } // Else else { t += A[i]; } } // Last word if (t.Length > 0) { words.Add(t); } return words; } // Function to count the number of Strings in B // that only contains the words from A static int countStrings(String A, String[] B) { HashSet<String> st = new HashSet<String>(); List<String> words = new List<String>(); words = getWords(A); foreach (String x in words) { st.Add(x); } // Variable to store the readonly answer int ans = 0; foreach (String x in B) { words = getWords(x); bool flag = false; foreach (String y in words) { if (!st.Contains(y)) { flag = true; break; } } // If all the words are in set st if (!flag) { ans++; } } return ans; } // Driver Code public static void Main(String[] args) { String A = "blue green red yellow"; String []B = { "blue red", "green pink", "yellow green" }; Console.Write(countStrings(A, B)); } } // This code is contributed by 29AjayKumar JavaScript <script> // JavaScript code for the above approach // Function to extract all words from a string function getWords(A) { let words = []; let t; for (let i = 0; i < A.length; i++) { // If the character is a space if (A[i] == ' ') { if (t.length > 0) { words.push(t); } t = ""; } // Else else { t += A[i]; } } // Last word if (t.length > 0) { words.push(t); } return words; } // Function to count the number of strings in B // that only contains the words from A function countStrings(A, B) { let st = new Set(); let words; words = getWords(A); for (let x of words) { st.add(x); } // Variable to store the final answer let ans = 0; for (let x of B) { words = getWords(x); let flag = 0; for (let y = 0; y < words.length; y++) { if (st.has(words[y])) { flag = 1; break; } } // If all the words are in set st if (flag == 0) { ans++; } } return ans + 1; } // Driver Code let A = "blue green red yellow"; let B = ["blue red", "green pink", "yellow green"]; document.write(countStrings(A, B)); // This code is contributed by Potta Lokesh </script> Output2 Time Complexity: O(N*M), where N is the size of vector B and M is the maximum length of in B.Auxiliary Space: O(N) Comment More infoAdvertise with us Next Article Count occurrences of strings formed using words in another string M manikajoshi500 Follow Improve Article Tags : Strings Algo Geek DSA Algo-Geek 2021 Practice Tags : Strings Similar Reads Count occurrences of a word in string Given a two strings s and word. The task is to count the number of occurrences of the string word in the string s.Note: The string word should appear in s as a separate word, not as a substring within other words.Examples: Input: s = "GeeksforGeeks A computer science portal for geeks", word = "porta 11 min read Count occurrences of a word in string | Set 2 (Using Regular Expressions) Given a string str and a word w, the task is to print the number of the occurrence of the given word in the string str using Regular Expression. Examples: Input: str = "peter parker picked a peck of pickled peppersâ, w = "peck"Output: 1Explanation: There is only one occurrence of the word "peck" in 4 min read Count occurrences of substring X before every occurrence of substring Y in a given string Given three strings S, X, and Y consisting of N, A, and B characters respectively, the task is to find the number of occurrences of the substring X before every occurrence of the substring Y in the given string S. Examples: Input S = âabcdefdefabcâ, X = âdefâ, Y = âabcâOutput: 0 2Explanation:First o 6 min read Count of substrings formed using a given set of characters only Given a string str and an array arr[] of K characters, the task is to find the number of substrings of str that contain characters only from the given character array arr[]. Note: The string str and the arr[] contain only lowercase alphabets. Examples: Input: S = "abcb", K = 2, charArray[] = {'a', ' 8 min read Count Occurrences of a Given Character in a String Given a string S and a character 'c', the task is to count the occurrence of the given character in the string.Examples: Input : S = "geeksforgeeks" and c = 'e'Output : 4Explanation: 'e' appears four times in str.Input : S = "abccdefgaa" and c = 'a' Output : 3Explanation: 'a' appears three times in 6 min read Count of substrings of a string containing another given string as a substring Given two strings S and T, the task is to count the number of substrings of S that contains string T in it as a substring. Examples: Input: S = "dabc", T = "ab"Output: 4Explanation: Substrings of S containing T as a substring are: S[0, 2] = âdabâS[1, 2] = âabâS[1, 3] = âabcâS[0, 3] = âdabcâ Input: S 8 min read Count occurrences of a sub-string with one variable character Given two strings a and b, and an integer k which is the index in b at which the character can be changed to any other character, the task is to check if b is a sub-string in a and print out how many times b occurs in a in total after replacing the b[k] with every possible lowercase character of Eng 5 min read Count of strings that can be formed from another string using each character at-most once Given two strings str1 and str2, the task is to print the number of times str2 can be formed using characters of str1. However, a character at any index of str1 can only be used once in the formation of str2. Examples: Input: str1 = "arajjhupoot", str2 = "rajput" Output: 1 Explanation:str2 can only 10 min read Count of distinct substrings of a string using Suffix Array Given a string of length n of lowercase alphabet characters, we need to count total number of distinct substrings of this string. Examples: Input : str = âababaâ Output : 10 Total number of distinct substring are 10, which are, "", "a", "b", "ab", "ba", "aba", "bab", "abab", "baba" and "ababa"Reco 15+ min read Count of Distinct Substrings occurring consecutively in a given String Given a string str, the task is to find the number of distinct substrings that are placed consecutively in the given string. Examples: Input: str = "geeksgeeksforgeeks" Output: 2 Explanation: geeksgeeksforgeeks -> {"geeks"} geeksgeeksforgeeks -> {"e"} Only one consecutive occurrence of "e" is 14 min read Like