Dada una string, cuenta el número de palabras que contiene. Las palabras están separadas por los siguientes caracteres: espacio (‘ ‘) o nueva línea (‘\n’) o tabulación (‘\t’) o una combinación de estos.
Puede haber muchas soluciones a este problema. La siguiente es una solución simple e interesante.
La idea es mantener dos estados: IN y OUT. El estado OUT indica que se ve un separador. El estado IN indica que se ve un carácter de palabra. Incrementamos el conteo de palabras cuando el estado anterior es FUERA y el siguiente carácter es un carácter de palabra.
C++
/* C++ program to count no of words from given input string. */ #include <bits/stdc++.h> using namespace std; #define OUT 0 #define IN 1 // returns number of words in str unsigned countWords(char *str) { int state = OUT; unsigned wc = 0; // word count // Scan all characters one by one while (*str) { // If next character is a separator, set the // state as OUT if (*str == ' ' || *str == '\n' || *str == '\t') state = OUT; // If next character is not a word separator and // state is OUT, then set the state as IN and // increment word count else if (state == OUT) { state = IN; ++wc; } // Move to next character ++str; } return wc; } // Driver code int main(void) { char str[] = "One two three\n four\tfive "; cout<<"No of words : "<<countWords(str); return 0; } // This is code is contributed by rathbhupendra
C
/* C program to count no of words from given input string. */ #include <stdio.h> #define OUT 0 #define IN 1 // returns number of words in str unsigned countWords(char *str) { int state = OUT; unsigned wc = 0; // word count // Scan all characters one by one while (*str) { // If next character is a separator, set the // state as OUT if (*str == ' ' || *str == '\n' || *str == '\t') state = OUT; // If next character is not a word separator and // state is OUT, then set the state as IN and // increment word count else if (state == OUT) { state = IN; ++wc; } // Move to next character ++str; } return wc; } // Driver program to tes above functions int main(void) { char str[] = "One two three\n four\tfive "; printf("No of words : %u", countWords(str)); return 0; }
Java
/* Java program to count no of words from given input string. */ public class GFG { static final int OUT = 0; static final int IN = 1; // returns number of words in str static int countWords(String str) { int state = OUT; int wc = 0; // word count int i = 0; // Scan all characters one by one while (i < str.length()) { // If next character is a separator, set the // state as OUT if (str.charAt(i) == ' ' || str.charAt(i) == '\n' || str.charAt(i) == '\t') state = OUT; // If next character is not a word separator // and state is OUT, then set the state as IN // and increment word count else if (state == OUT) { state = IN; ++wc; } // Move to next character ++i; } return wc; } // Driver program to test above functions public static void main(String args[]) { String str = "One two three\n four\tfive "; System.out.println("No of words : " + countWords(str)); } } // This code is contributed by Sumit Ghosh
Python3
# Python3 program to count words # in a given string OUT = 0 IN = 1 # Returns number of words in string def countWords(string): state = OUT wc = 0 # Scan all characters one by one for i in range(len(string)): # If next character is a separator, # set the state as OUT if (string[i] == ' ' or string[i] == '\n' or string[i] == '\t'): state = OUT # If next character is not a word # separator and state is OUT, then # set the state as IN and increment # word count elif state == OUT: state = IN wc += 1 # Return the number of words return wc # Driver Code string = "One two three\n four\tfive " print("No. of words : " + str(countWords(string))) # This code is contributed by BHAVYA JAIN
C#
// C# program to count no of words // from given input string. using System; class GFG { static int OUT = 0; static int IN = 1; // returns number of words in str static int countWords(String str) { int state = OUT; int wc = 0; // word count int i = 0; // Scan all characters one // by one while (i < str.Length) { // If next character is a separator, // set the state as OUT if (str[i] == ' ' || str[i] == '\n'|| str[i] == '\t') state = OUT; // If next character is not a word // separator and state is OUT, then // set the state as IN and increment // word count else if (state == OUT) { state = IN; ++wc; } // Move to next character ++i; } return wc; } // Driver program to test above functions public static void Main() { String str = "One two three\n four\tfive "; Console.WriteLine("No of words : " + countWords(str)); } } // This code is contributed by Sam007.
PHP
<?php // PHP program to count no of // words from given input string $OUT = 0; $IN = 1; // returns number of words in str function countWords($str) { global $OUT, $IN; $state = $OUT; $wc = 0; // word count $i = 0; // Scan all characters one by one while ($i < strlen($str)) { // If next character is // a separator, set the // state as OUT if ($str[$i] == " " || $str[$i] == "\n" || $str[$i] == "\t") $state = $OUT; // If next character is not a // word separator and state is // OUT, then set the state as // IN and increment word count else if ($state == $OUT) { $state = $IN; ++$wc; } // Move to next character ++$i; } return $wc; } // Driver Code $str = "One two three\n four\tfive "; echo "No of words : " . countWords($str); // This code is contributed // by ChitraNayal ?>
Javascript
<script> // javascript program to count no of words // from given input string. var OUT = 0; var IN = 1; // returns number of words in str function countWords( str) { var state = OUT; var wc = 0; // word count var i = 0; // Scan all characters one // by one while (i < str.length) { // If next character is a separator, // set the state as OUT if (str[i] == ' ' || str[i] == '\n'|| str[i] == '\t') state = OUT; // If next character is not a word // separator and state is OUT, then // set the state as IN and increment // word count else if (state == OUT) { state = IN; ++wc; } // Move to next character ++i; } return wc; } // Driver program to test above functions var str = "One two three\n four\tfive "; document.write("No of words : " + countWords(str)); // This code is contributed by bunnyram19. </script>
Java
// Java program to count total // number of words in the string class GFG { // Function to count total number // of words in the string public static int countWords(String str) { // Check if the string is null // or empty then return zero if (str == null || str.isEmpty()) return 0; // Splitting the string around // matches of the given regular // expression String[] words = str.split("\\s+"); // Return number of words // in the given string return words.length; } // Driver Code public static void main(String args[]) { // Given String str String str = "One two three\n four\tfive "; // Print the result System.out.println("No of words : " + countWords(str)); } } // This code is contributed by Prashant Srivastava
Python3
# Python program to count total # number of words in the string def countWords(s): # Check if the string is null # or empty then return zero if s.strip() == "": return 0 # Splitting the string words = s.split() return len(words) if __name__ == "__main__": s = "One two three\n four\tfive " print("No of words : ", countWords(s))
Java
// Java program to count total // number of words in the string import java.util.StringTokenizer; class GFG { // Function to count total number // of words in the string public static int countWords(String str) { // Check if the string is null // or empty then return zero if (str == null || str.isEmpty()) return 0; // Create a StringTokenizer with the // given string passed as a parameter StringTokenizer tokens = new StringTokenizer(str); // Return the number of words // in the given string using // countTokens() method return tokens.countTokens(); } // Driver Code public static void main(String args[]) { // Given String str String str = "One two three\n four\tfive "; // Print the result System.out.println("No of words: " + countWords(str)); } } // This code is contributed by Prashant Srivastava
C++
// C++ program to count total // number of words in the string #include <bits/stdc++.h> using namespace std; // Function to count total number // of words in the string int countWords(char* str, int n) { // Check if the string is null // or empty then return zero if (n == 0) { return 0; } int wordCount = 0; bool isWord = false; int endOfLine = n - 1; for (int i = 0; i < n; i++) { // Check if the character is a letter // and index of character array doesn't // equal to end of line that means, it is // a word and set isWord by true if (isalpha(str[i]) && i != endOfLine) { isWord = true; } // Check if the character is not a letter // that means there is a space, then we // increment the wordCount by one and set // the isWord by false else if (!isalpha(str[i]) && isWord) { wordCount++; isWord = false; } // Check for the last word of the // sentence and increment the wordCount // by one else if (isalpha(str[i]) && i == endOfLine) { wordCount++; } } // Return the total number of // words in the string return wordCount; } // Driver code int main() { char str[] = "One two three\n four\tfive "; int n = (sizeof(str) / sizeof(char)) - 1; cout << "No of words : " << countWords(str, n); return 0; } // This is code is contributed by Aarti_Rathi
Java
// Java program to count total // number of words in the string class GFG { // Function to count total number // of words in the string public static int countWords(String str) { // Check if the string is null // or empty then return zero if(str == null || str.isEmpty()) return 0; int wordCount = 0; boolean isWord = false; int endOfLine = str.length() - 1; // Converting the given string // into a character array char[] ch = str.toCharArray(); for (int i = 0; i < ch.length; i++) { // Check if the character is a letter // and index of character array doesn't // equal to end of line that means, it is // a word and set isWord by true if (Character.isLetter(ch[i]) && i != endOfLine) isWord = true; // Check if the character is not a letter // that means there is a space, then we // increment the wordCount by one and set // the isWord by false else if (!Character.isLetter(ch[i]) && isWord) { wordCount++; isWord = false; } // Check for the last word of the // sentence and increment the wordCount // by one else if (Character.isLetter(ch[i]) && i == endOfLine) wordCount++; } // Return the total number of // words in the string return wordCount; } // Driver Code public static void main(String args[]) { // Given String str String str = "One two three\n four\tfive "; // Print the result System.out.println("No of words : " + countWords(str)); } } // This code is contributed by Prashant Srivastava
Python3
# Python program to count total # number of words in the string # Function to count total number # of words in the string def countWords(Str): # Check if the string is null # or empty then return zero if(Str == None or len(Str) == 0): return 0 wordCount = 0 isWord = False endOfLine = len(Str) - 1 # Converting the given string # into a character array ch = list(Str) for i in range(len(ch)): # Check if the character is a letter # and index of character array doesn't # equal to end of line that means, it is # a word and set isWord by true if(ch[i].isalpha() and i != endOfLine): isWord = True # Check if the character is not a letter # that means there is a space, then we # increment the wordCount by one and set # the isWord by false elif(not ch[i].isalpha() and isWord): wordCount += 1 isWord = False # Check for the last word of the # sentence and increment the wordCount # by one elif(ch[i].isalpha() and i == endOfLine): wordCount += 1 # Return the total number of # words in the string return wordCount # Driver Code # Given String str Str = "One two three\n four\tfive " # Print the result print("No of words :", countWords(Str)) # This code is contributed by rag2127
C#
// C# program to count total // number of words in the string using System; public class GFG { // Function to count total number // of words in the string static int countWords(String str) { // Check if the string is null // or empty then return zero if(str == null) { return 0; } int wordCount = 0; bool isWord = false; int endOfLine = str.Length - 1; // Converting the given string // into a character array char[] ch = str.ToCharArray(); for (int i = 0; i < ch.Length; i++) { // Check if the character is a letter // and index of character array doesn't // equal to end of line that means, it is // a word and set isWord by true if (Char.IsLetter(ch[i]) && i != endOfLine) { isWord = true; } // Check if the character is not a letter // that means there is a space, then we // increment the wordCount by one and set // the isWord by false else if (!Char.IsLetter(ch[i]) && isWord) { wordCount++; isWord = false; } // Check for the last word of the // sentence and increment the wordCount // by one else if (Char.IsLetter(ch[i]) && i == endOfLine) { wordCount++; } } // Return the total number of // words in the string return wordCount; } // Driver Code static public void Main () { // Given String str string str = "One two three\n four\tfive "; // Print the result Console.WriteLine("No of words : " + countWords(str)); } } // This code is contributed by avanitrachhadiya2155
Javascript
<script> // Javascript program to count total // number of words in the string // Function to count total number // of words in the string function countWords(str) { // Check if the string is null // or empty then return zero if(str == null || str.length==0) return 0; let wordCount = 0; let isWord = false; let endOfLine = str.length - 1; // Converting the given string // into a character array let ch = str.split(""); for (let i = 0; i < ch.length; i++) { // Check if the character is a letter // and index of character array doesn't // equal to end of line that means, it is // a word and set isWord by true if (isLetter(ch[i]) && i != endOfLine) isWord = true; // Check if the character is not a letter // that means there is a space, then we // increment the wordCount by one and set // the isWord by false else if (!isLetter(ch[i]) && isWord) { wordCount++; isWord = false; } // Check for the last word of the // sentence and increment the wordCount // by one else if (isLetter(ch[i]) && i == endOfLine) wordCount++; } // Return the total number of // words in the string return wordCount; } function isLetter(c) { return c.toLowerCase() != c.toUpperCase(); } // Driver Code // Given String str let str="One two three\n four\tfive "; // Print the result document.write("No of words : " + countWords(str)); // This code is contributed by ab2127 </script>
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA