Open In App

Count occurrences of a word in string

Last Updated : 02 May, 2025
Summarize
Comments
Improve
Suggest changes
Share
Like Article
Like
Report

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 = "portal"
Output: 1
Explanation: The word "portal" appears once as a separate word in the string.

Input: s = "Learning learn learners learned learningly", word = "learn"
Output: 1
Explanation: The word "learn" appears exactly once as a separate word. Words like "learners", "learned", and "learningly" contain "learn" as a substring, but do not count as exact word matches.

Input: s = "GeeksforGeeks A computer science portal for geeks", word = "technical"
Output: 0

[Approach 1] Split the String and Count - O(n) Time and O(n) Space

The idea is to split the string by forming each word character by character while traversing the string. The thought process is that when we encounter a space, it signals the end of a word, so we compare it to the target word. If it matches, we increase the count, and then reset to form the next word. Finally, we also check the last word, since it may not end with a space.

C++
// C++ program to count occurrences of a word
// by splitting the string and counting
#include <bits/stdc++.h>
using namespace std;

// Function to count occurrences of word in s
int countOccurrences(string s, string word) {

    int count = 0;
    string curr = "";

    for (int i = 0; i < s.length(); i++) {

        // If current char is space,
        // check the built word
        if (s[i] == ' ') {
            if (curr == word) {
                count++;
            }

            // Reset current word
            curr = "";
        }

        // Else keep building the word
        else {
            curr += s[i];
        }
    }

    // Check the last word (after loop ends)
    if (curr == word) {
        count++;
    }

    return count;
}

// Driver code
int main() {

    string s = "GeeksforGeeks A computer science portal for geeks";
    string word = "portal";

    // Call function and print result
    int res = countOccurrences(s, word);
    cout << res << endl;

    return 0;
}
Java
// Java program to count occurrences of a word
// by splitting the string and counting
class GfG {

    // Function to count occurrences of word in s
    static int countOccurrences(String s, String word) {

        int count = 0;
        String curr = "";

        for (int i = 0; i < s.length(); i++) {

            // If current char is space,
            // check the built word
            if (s.charAt(i) == ' ') {
                if (curr.equals(word)) {
                    count++;
                }

                // Reset current word
                curr = "";
            }

            // Else keep building the word
            else {
                curr += s.charAt(i);
            }
        }

        // Check the last word (after loop ends)
        if (curr.equals(word)) {
            count++;
        }

        return count;
    }

    // Driver code
    public static void main(String[] args) {

        String s = "GeeksforGeeks A computer science portal for geeks";
        String word = "portal";

        // Call function and print result
        int res = countOccurrences(s, word);
        System.out.println(res);
    }
}
Python
# Python program to count occurrences of a word
# by splitting the string and counting

def countOccurrences(s, word):

    count = 0
    curr = ""

    for i in range(len(s)):

        # If current char is space,
        # check the built word
        if s[i] == ' ':
            if curr == word:
                count += 1

            # Reset current word
            curr = ""

        # Else keep building the word
        else:
            curr += s[i]

    # Check the last word (after loop ends)
    if curr == word:
        count += 1

    return count

if __name__ == "__main__":

    s = "GeeksforGeeks A computer science portal for geeks"
    word = "portal"

    # Call function and print result
    res = countOccurrences(s, word)
    print(res)
C#
// C# program to count occurrences of a word
// by splitting the string and counting
using System;

class GfG {

    // Function to count occurrences of word in s
    static int countOccurrences(string s, string word) {

        int count = 0;
        string curr = "";

        for (int i = 0; i < s.Length; i++) {

            // If current char is space,
            // check the built word
            if (s[i] == ' ') {
                if (curr == word) {
                    count++;
                }

                // Reset current word
                curr = "";
            }

            // Else keep building the word
            else {
                curr += s[i];
            }
        }

        // Check the last word (after loop ends)
        if (curr == word) {
            count++;
        }

        return count;
    }

    // Driver code
    public static void Main() {

        string s = "GeeksforGeeks A computer science portal for geeks";
        string word = "portal";

        // Call function and print result
        int res = countOccurrences(s, word);
        Console.WriteLine(res);
    }
}
JavaScript
// JavaScript program to count occurrences of a word
// by splitting the string and counting

function countOccurrences(s, word) {

    let count = 0;
    let curr = "";

    for (let i = 0; i < s.length; i++) {

        // If current char is space,
        // check the built word
        if (s[i] === ' ') {
            if (curr === word) {
                count++;
            }

            // Reset current word
            curr = "";
        }

        // Else keep building the word
        else {
            curr += s[i];
        }
    }

    // Check the last word (after loop ends)
    if (curr === word) {
        count++;
    }

    return count;
}

// Driver code
let s = "GeeksforGeeks A computer science portal for geeks";
let word = "portal";

// Call function and print result
let res = countOccurrences(s, word);
console.log(res);

Output
1

[Approach 2] Using Inbuilt Split Function - O(n) Time and O(n) Space

The idea is to split the input string into individual words using the space delimiter and then compare each word with the given target word. This approach relies on the observation that using built-in split functions makes it easy to isolate complete words without worrying about manual parsing. We then traverse the resulting array and increment a counter whenever there's a match with the target.

C++
// C++ program to count occurrences of a word
// using inbuilt string split
#include <bits/stdc++.h>
using namespace std;

// Function to count occurrences of word in s
int countOccurrences(string s, string word) {

    int count = 0;

    vector<string> tokens;

    // Use stringstream to split the string
    stringstream ss(s);
    string token;

    // Store each word into the vector
    while (ss >> token) {
        tokens.push_back(token);
    }

    // Count matching words
    for (int i = 0; i < tokens.size(); i++) {
        if (tokens[i] == word) {
            count++;
        }
    }

    return count;
}

// Driver code
int main() {

    string s = "GeeksforGeeks A computer science portal for geeks";
    string word = "portal";

    int res = countOccurrences(s, word);
    cout << res << endl;

    return 0;
}
Java
// Java program to count occurrences of a word
// using inbuilt string split
class GfG {

    // Function to count occurrences of word in s
    static int countOccurrences(String s, String word) {

        int count = 0;

        // Use split function to tokenize string
        String[] tokens = s.split(" ");

        // Count matching words
        for (int i = 0; i < tokens.length; i++) {
            if (tokens[i].equals(word)) {
                count++;
            }
        }

        return count;
    }

    // Driver code
    public static void main(String[] args) {

        String s = "GeeksforGeeks A computer science portal for geeks";
        String word = "portal";

        int res = countOccurrences(s, word);
        System.out.println(res);
    }
}
Python
# Python program to count occurrences of a word
# using inbuilt string split

def countOccurrences(s, word):

    count = 0

    # Use split function to tokenize string
    tokens = s.split(" ")

    # Count matching words
    for i in range(len(tokens)):
        if tokens[i] == word:
            count += 1

    return count

# Driver code
if __name__ == "__main__":

    s = "GeeksforGeeks A computer science portal for geeks"
    word = "portal"

    res = countOccurrences(s, word)
    print(res)
C#
// C# program to count occurrences of a word
// using inbuilt string split
using System;

class GfG {

    // Function to count occurrences of word in s
    static int countOccurrences(string s, string word) {

        int count = 0;

        // Use Split function to tokenize string
        string[] tokens = s.Split(' ');

        // Count matching words
        for (int i = 0; i < tokens.Length; i++) {
            if (tokens[i] == word) {
                count++;
            }
        }

        return count;
    }

    // Driver code
    static void Main() {

        string s = "GeeksforGeeks A computer science portal for geeks";
        string word = "portal";

        int res = countOccurrences(s, word);
        Console.WriteLine(res);
    }
}
JavaScript
// JavaScript program to count occurrences of a word
// using inbuilt string split

function countOccurrences(s, word) {

    let count = 0;

    // Use split function to tokenize string
    let tokens = s.split(" ");

    // Count matching words
    for (let i = 0; i < tokens.length; i++) {
        if (tokens[i] === word) {
            count++;
        }
    }

    return count;
}

// Driver code
let s = "GeeksforGeeks A computer science portal for geeks";
let word = "portal";

let res = countOccurrences(s, word);
console.log(res);

Output
1

[Approach 3] Using Regular Expression - O(n) Time and O(1) Space

The idea is to use regular expressions to directly identify complete words in the string. We define a pattern \b\w+\b that matches only separate words by recognizing word boundaries. Instead of splitting or manually parsing, we iterate through all matches and compare each to the target word, counting the exact matches.

C++
// C++ program to count occurrences of a word
// using regex
#include <bits/stdc++.h>
using namespace std;

// Function to count occurrences of word in s
int countOccurrences(string s, string word) {

    int count = 0;

    // Use regex to find words
    regex re("\\b\\w+\\b");
    auto words_begin = sregex_iterator(s.begin(), s.end(), re);
    auto words_end = sregex_iterator();

    // Count matching words
    for (auto it = words_begin; it != words_end; ++it) {
        if (it->str() == word) {
            count++;
        }
    }

    return count;
}

// Driver code
int main() {

    string s = "GeeksforGeeks A computer science portal for geeks.";
    string word = "portal";

    int res = countOccurrences(s, word);
    cout << res << endl;

    return 0;
}
Java
// Java program to count occurrences of a word
// using regex
import java.util.regex.*;

class GfG {

    // Function to count occurrences of word in s
    static int countOccurrences(String s, String word) {

        int count = 0;

        // Use regex matcher
        Pattern pattern = Pattern.compile("\\b\\w+\\b");
        Matcher matcher = pattern.matcher(s);

        // Count matching words
        while (matcher.find()) {
            if (matcher.group().equals(word)) {
                count++;
            }
        }

        return count;
    }

    // Driver code
    public static void main(String[] args) {

        String s = "GeeksforGeeks A computer science portal for geeks.";
        String word = "portal";

        int res = countOccurrences(s, word);
        System.out.println(res);
    }
}
Python
# Python program to count occurrences of a word
# using regex
import re

def countOccurrences(s, word):

    count = 0

    # Use finditer to iterate over matches
    for match in re.finditer(r'\b\w+\b', s):
        if match.group() == word:
            count += 1

    return count

# Driver Code
if __name__ == "__main__":

    s = "GeeksforGeeks A computer science portal for geeks."
    word = "portal"

    res = countOccurrences(s, word)
    print(res)
C#
// C# program to count occurrences of a word
// using regex
using System;
using System.Text.RegularExpressions;

class GfG {

    // Function to count occurrences of word in s
    public static int countOccurrences(string s, string word) {

        int count = 0;

        // Use regex to find matches
        MatchCollection matches = Regex.Matches(s, @"\b\w+\b");

        // Count matching words
        foreach (Match match in matches) {
            if (match.Value == word) {
                count++;
            }
        }

        return count;
    }

    // Driver code
    public static void Main() {

        string s = "GeeksforGeeks A computer science portal for geeks.";
        string word = "portal";

        int res = countOccurrences(s, word);
        Console.WriteLine(res);
    }
}
JavaScript
// JavaScript program to count occurrences of a word
// using regex 

function countOccurrences(s, word) {

    let count = 0;

    // Use matchAll to iterate over words
    const regex = /\b\w+\b/g;
    const matches = s.matchAll(regex);

    for (const match of matches) {
        if (match[0] === word) {
            count++;
        }
    }

    return count;
}

// Driver Code
let s = "GeeksforGeeks A computer science portal for geeks.";
let word = "portal";

let res = countOccurrences(s, word);
console.log(res);

Output
1

Next Article
Article Tags :

Similar Reads