Count the number of words in a string in C++

In this tutorial, we will learn how to count the number of words in a string in C++. There can be various ways to do this. The following is a simple one. Given a string, words can be separated by the following characters:

  1. Space-” “
  2. New line-“\n”
  3. Tab-“\t”
  4. Or a combination of these.

How to count the number of words in a string in C++

For example-

String=”An   apple\ta  \nday  keeps a\ndoctor \naway   \t ”

The number of words here are:7

String=”apple pear tomato\n\t yoaster ”

The number of words here are:5

Algorithm:

  1. We will check each character one by one.
  2. A word will be there only and only if its previous character is whitespace and the current character is an alphabet.
  3. By keeping this logic in mind, we can store current and previous char and pass them in a function isword().
  4. The isword() function will return true if the previous character is whitespace and the current one an alphabet.
  5. bool isAlpha(char c){
    
        return (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z');
    
    }
    
    bool isWhiteSpace(char c){
    
        return c == ' ' || c == '\n' || c == '\t';
    
    }

    These function will check if the character is an alphabet or whitespace.

Here is the code implementation:

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

bool isAlpha(char c){

    return (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z');

}

bool isWhiteSpace(char c){

    return c == ' ' || c == '\n' || c == '\t';

}

bool isWord(char cur, char previous){

    return isAlpha(cur) && isWhiteSpace(previous);

}


int countWords(char *str) 
{ 
   int count=0;
   char cur;
   char previous = ' ';
  
    while (*str) 
  { 
      cur=*str;
       if (isWord(cur, previous)) count++;
    
    previous = cur;
    // Move to next character 
    ++str; 
  } 

  return count; 
} 

 
int main() 
{ 
  char str[] = "apple   pear tomato\n\t yoaster  "; 
  cout<<"No of words : "<<countWords(str); 
  return 0; 
} 


Output:

No of words:4

Input: ” Hello from the other side”

Output:

No of words:5

Time complexity is o(n)

Also, refer to:

Create all possible strings from a given set of characters in C++

Leave a Reply

Your email address will not be published. Required fields are marked *