Рубрики

Подсчет слов в заданной строке

По заданной строке подсчитайте количество слов в ней. Слова разделяются следующими символами: пробел ('') или новая строка ('/ n') или табуляция ('/ t') или их комбинация.

Там может быть много решений этой проблемы. Ниже приводится простое и интересное решение.
Идея состоит в том, чтобы поддерживать два состояния: IN и OUT. Состояние OUT указывает, что разделитель виден. Состояние IN указывает на то, что символ слова виден. Мы увеличиваем количество слов, когда предыдущее состояние — OUT, а следующий символ — символ слова.

C ++

/ * C ++ программа для подсчета количества слов
из заданной входной строки. * /
#include <bits/stdc++.h>

using namespace std; 

  
#define OUT 0 
#define IN 1 

  
// возвращает количество слов в строке

unsigned countWords(char *str) 

    int state = OUT; 

    unsigned wc = 0; // количество слов

  

    // Сканируем все символы по одному

    while (*str) 

    

        // Если следующий символ является разделителем, установить

        // указать как OUT

        if (*str == ' ' || *str == '\n' || *str == '\t'

            state = OUT; 

  

        // Если следующий символ не является разделителем слов и

        // состояние OUT, затем установите состояние как IN и

        // увеличиваем количество слов

        else if (state == OUT) 

        

            state = IN; 

            ++wc; 

        

  

        // Перейти к следующему символу

        ++str; 

    

  

    return wc; 

  
// Код драйвера

int main(void

    char str[] = "One two     three\n four\tfive "

    cout<<"No of words : "<<countWords(str); 

    return 0; 

  
// Это код, предоставленный rathbhupendra

С

/ * C программа для подсчета количества слов из заданной входной строки. * /
#include <stdio.h>

  
#define OUT    0
#define IN    1

  
// возвращает количество слов в строке

unsigned countWords(char *str)

{

    int state = OUT;

    unsigned wc = 0;  // количество слов

  

    // Сканируем все символы по одному

    while (*str)

    {

        // Если следующий символ является разделителем, установить

        // указать как OUT

        if (*str == ' ' || *str == '\n' || *str == '\t')

            state = OUT;

  

        // Если следующий символ не является разделителем слов и

        // состояние OUT, затем установите состояние как IN и

        // увеличиваем количество слов

        else if (state == OUT)

        {

            state = IN;

            ++wc;

        }

  

        // Перейти к следующему символу

        ++str;

    }

  

    return wc;

}

  
// Драйвер программы для проверки вышеуказанных функций

int main(void)

{

    char str[] = "One two         three\n    four\tfive  ";

    printf("No of words : %u", countWords(str));

    return 0;

}

Джава

/ * Java-программа для подсчета слов
из заданной входной строки. * /

public class GFG {

   

    static final int OUT = 0;

    static final int IN = 1;

       

    // возвращает количество слов в строке

    static int countWords(String str)

    {

        int state = OUT;

        int wc = 0// количество слов

        int i = 0;

          

        // Сканируем все символы по одному

        while (i < str.length())

        {

            // Если следующий символ является разделителем, установить

            // указать как OUT

            if (str.charAt(i) == ' ' || str.charAt(i) == '\n' 

                    || str.charAt(i) == '\t')

                state = OUT;

                  

       

            // Если следующий символ не является разделителем слов

            // и состояние OUT, затем установить состояние как IN

            // и увеличиваем количество слов

            else if (state == OUT)

            {

                state = IN;

                ++wc;

            }

       

            // Перейти к следующему символу

            ++i;

        }

        return wc;

    }

       

    // Программа драйвера для проверки вышеуказанных функций

    public static void main(String args[])

    {

        String str = "One two       three\n four\tfive  ";

        System.out.println("No of words : " + countWords(str));

    }

}
// Этот код предоставлен Sumit Ghosh

python3

# Python3 программа для подсчета слов
# в данной строке

OUT = 0

IN = 1

  
# Возвращает количество слов в строке

def countWords(string):

    state = OUT

    wc = 0

  

    # Сканирование всех символов по одному

    for i in range(len(string)):

  

        # Если следующий символ является разделителем,

        # установить состояние как OUT

        if (string[i] == ' ' or string[i] == '\n' or

            string[i] == '\t'):

            state = OUT

  

        # Если следующий символ не слово

        # разделитель и состояние OUT, тогда

        # установить состояние как IN и приращение

        Количество слов

        elif state == OUT:

            state = IN

            wc += 1

  

    # Вернуть количество слов

    return wc

  
Код водителя

string = "One two         three\n four\tfive "

print("No. of words : " + str(countWords(string)))

  
# Этот код предоставлен BHAVYA JAIN

C #

// C # программа для подсчета количества слов
// из заданной входной строки.

using System;

  

class GFG {

      

    static int OUT = 0;

    static int IN = 1;

      

    // возвращает количество слов в строке

    static int countWords(String str)

    {

        int state = OUT;

        int wc = 0; // количество слов

        int i = 0;

          

        // Сканируем все символы по одному

        // одним

        while (i < str.Length)

        {

            // Если следующий символ является разделителем,

            // установить состояние как OUT

            if (str[i] == ' ' || str[i] == '\n'|| 

                                  str[i] == '\t')

                state = OUT;

                  

      

            // Если следующий символ не слово

            // разделитель и состояние OUT, затем

            // устанавливаем состояние как IN и увеличиваем

            // количество слов

            else if (state == OUT)

            {

                state = IN;

                ++wc;

            }

      

            // Перейти к следующему символу

            ++i;

        }

          

        return wc;

    }

      

    // Программа драйвера для проверки вышеуказанных функций

    public static void Main()

    {

        String str = "One two     three\n four\tfive ";

        Console.WriteLine("No of words : "

                              + countWords(str));

    }

}

  
// Этот код предоставлен Sam007.

PHP

<?php 
// PHP-программа для подсчета
// слова из заданной входной строки

$OUT = 0;

$IN = 1;

  
// возвращает количество слов в строке

function countWords($str)

{

    global $OUT, $IN;

    $state = $OUT;

    $wc = 0; // количество слов

    $i = 0;

      

    // Сканируем все символы по одному

    while ($i < strlen($str))

    {

        // Если следующий символ

        // разделитель, установить

        // указать как OUT

        if ($str[$i] == " " || 

            $str[$i] == "\n" || 

            $str[$i] == "\t")

            $state = $OUT;

  

        // Если следующий символ не

        // разделитель слов и состояние

        // OUT, затем устанавливаем состояние как

        // IN и увеличение количества слов

        else if ($state == $OUT)

        {

            $state = $IN;

            ++$wc;

        }

  

        // Перейти к следующему символу

        ++$i;

    }

  

    return $wc;

}

  
// Код драйвера

$str = "One two         three\n four\tfive ";

echo "No of words : " . countWords($str);

  
// Этот код добавлен
// ChitraNayal
?>


Выход:

No of words : 5


Временная сложность:
O (n)

Эта статья составлена Нарендрой Кангралкар . Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

Подсчет слов в заданной строке

0.00 (0%) 0 votes