Related Articles
String containing first letter of every word in a given string with spaces
• Difficulty Level : Easy
• Last Updated : 09 Aug, 2019

A String str is given which contains lowercase English letters and spaces. It may contain multiple spaces. Get the first letter of every word and return the result as a string. The result should not contain any space.

Examples:

```Input : str = "geeks for geeks"
Output : gfg

Input : str = "happy   coding"
Output : hc
```

## Recommended: Please solve it on “PRACTICE ” first, before moving on to the solution.

The idea is to traverse each character of string str and maintain a boolean variable, which was initially set as true. Whenever we encounter space we set the boolean variable as true. And if we encounter any character other than space, we will check boolean variable, if it was set as true then copy that charter to output string and set the boolean variable as false. If the boolean variable is set false, do nothing.
Algorithm:

```1. Traverse string str. And initialize a variable v as true.
2. If str[i] == ' '. Set v as true.
3. If str[i] != ' '. Check if v is true or not.
a) If true, copy str[i] to output string and set v as false.
b) If false, do nothing.
```

## C++

 `// C++ program to find the string which contain ` `// the first character of each word of another ` `// string. ` `#include ` `using` `namespace` `std; ` ` `  `// Function to find string which has first ` `// character of each word. ` `string firstLetterWord(string str) ` `{ ` `    ``string result = ``""``; ` ` `  `    ``// Traverse the string. ` `    ``bool` `v = ``true``; ` `    ``for` `(``int` `i=0; i

## Java

 `// Java program to find the string which  ` `// contain the first character of each word   ` `// of another string.  ` ` `  `class` `GFG  ` `{ ` `     `  `    ``// Function to find string which has first  ` `    ``// character of each word.  ` `    ``static` `String firstLetterWord(String str)  ` `    ``{ ` `        ``String result = ``""``; ` ` `  `        ``// Traverse the string.  ` `        ``boolean` `v = ``true``; ` `        ``for` `(``int` `i = ``0``; i < str.length(); i++)  ` `        ``{ ` `            ``// If it is space, set v as true.  ` `            ``if` `(str.charAt(i) == ``' '``)  ` `            ``{ ` `                ``v = ``true``; ` `            ``}  ` `             `  `            ``// Else check if v is true or not.  ` `            ``// If true, copy character in output  ` `            ``// string and set v as false.  ` `            ``else` `if` `(str.charAt(i) != ``' '` `&& v == ``true``)  ` `            ``{ ` `                ``result += (str.charAt(i)); ` `                ``v = ``false``; ` `            ``} ` `        ``} ` ` `  `        ``return` `result; ` `    ``} ` ` `  `    ``// Driver code  ` `    ``public` `static` `void` `main(String[] args)  ` `    ``{ ` `        ``String str = ``"geeks for geeks"``; ` `        ``System.out.println(firstLetterWord(str)); ` `    ``} ` `} ` ` `  `// This code is contributed by  ` `// 29AjayKumar `

## Python 3

 `# Python 3 program to find the string which  ` `# contain the first character of each word  ` `# of another string. ` ` `  `# Function to find string which has first ` `# character of each word. ` `def` `firstLetterWord(``str``): ` ` `  `    ``result ``=` `"" ` ` `  `    ``# Traverse the string. ` `    ``v ``=` `True` `    ``for` `i ``in` `range``(``len``(``str``)): ` `         `  `        ``# If it is space, set v as true. ` `        ``if` `(``str``[i] ``=``=` `' '``): ` `            ``v ``=` `True` ` `  `        ``# Else check if v is true or not. ` `        ``# If true, copy character in output ` `        ``# string and set v as false. ` `        ``elif` `(``str``[i] !``=` `' '` `and` `v ``=``=` `True``): ` `            ``result ``+``=` `(``str``[i]) ` `            ``v ``=` `False` ` `  `    ``return` `result ` ` `  `# Driver Code ` `if` `__name__ ``=``=` `"__main__"``: ` `     `  `    ``str` `=` `"geeks for geeks"` `    ``print``(firstLetterWord(``str``)) ` ` `  `# This code is contributed by ita_c `

## C#

 `// C# program to find the string which  ` `// contain the first character of each word  ` `// of another string.  ` `using` `System; ` ` `  `class` `GFG  ` `{  ` `     `  `    ``// Function to find string which has first  ` `    ``// character of each word.  ` `    ``static` `String firstLetterWord(String str)  ` `    ``{  ` `        ``String result = ``""``;  ` ` `  `        ``// Traverse the string.  ` `        ``bool` `v = ``true``;  ` `        ``for` `(``int` `i = 0; i < str.Length; i++)  ` `        ``{  ` `            ``// If it is space, set v as true.  ` `            ``if` `(str[i] == ``' '``)  ` `            ``{  ` `                ``v = ``true``;  ` `            ``}  ` `             `  `            ``// Else check if v is true or not.  ` `            ``// If true, copy character in output  ` `            ``// string and set v as false.  ` `            ``else` `if` `(str[i] != ``' '` `&& v == ``true``)  ` `            ``{  ` `                ``result += (str[i]);  ` `                ``v = ``false``;  ` `            ``}  ` `        ``}  ` `        ``return` `result;  ` `    ``}  ` ` `  `    ``// Driver code  ` `    ``public` `static` `void` `Main()  ` `    ``{  ` `        ``String str = ``"geeks for geeks"``;  ` `        ``Console.WriteLine(firstLetterWord(str));  ` `    ``}  ` `}  ` ` `  `// This code is contributed by PrinciRaj1992 `

Output:

```gfg
```

Time Complexity: O(n)

Another Approach 1:
This approach uses the StringBuilder class of Java. In this approach, we will first split the input string based on the spaces. The spaces in the strings can be matched using a regular expression. The splitted strings are stored in an array of string. Then we can simply append the first character of each splitted string in the String Builder object.

## C++

 `// C++ implementation of the above approach ` `#include ` `using` `namespace` `std; ` ` `  `string processWords(``char` `*input) ` `{ ` `    ``/* we are splitting the input based on  ` `    ``spaces (s)+ : this regular expression  ` `    ``will handle scenarios where we have words  ` `    ``separated by multiple spaces */` `    ``char` `*p; ` `    ``vector s; ` ` `  `    ``p = ``strtok``(input, ``" "``); ` `    ``while` `(p != NULL) ` `    ``{ ` `        ``s.push_back(p); ` `        ``p = ``strtok``(NULL, ``" "``); ` `    ``} ` ` `  `    ``string charBuffer; ` ` `  `    ``for` `(string values : s) ` ` `  `        ``/* charAt(0) will pick only the first character  ` `        ``from the string and append to buffer */` `        ``charBuffer += values; ` ` `  `    ``return` `charBuffer; ` `} ` ` `  `// Driver code ` `int` `main() ` `{ ` `    ``char` `input[] = ``"geeks for geeks"``; ` `    ``cout << processWords(input); ` `    ``return` `0; ` `} ` ` `  `// This code is contributed by ` `// sanjeev2552 `

## Java

 `// Java implementation of the above approach ` ` `  `class` `GFG  ` `{ ` `   ``private` `static` `StringBuilder charBuffer = ``new` `StringBuilder(); ` `     `  `   ``public` `static` `String processWords(String input)  ` `   ``{ ` `        ``/* we are splitting the input based on  ` `           ``spaces (s)+ : this regular expression  ` `           ``will handle scenarios where we have words  ` `           ``separated by multiple spaces */` `        ``String s[] = input.split(``"(\s)+"``); ` `         `  `        ``for``(String values : s)  ` `        ``{ ` `           ``/* charAt(0) will pick only the first character  ` `              ``from the string and append to buffer */` `            ``charBuffer.append(values.charAt(``0``)); ` `        ``} ` `         `  `      ``return` `charBuffer.toString(); ` `   ``} ` `    `  `   ``// main function ` `   ``public` `static` `void` `main (String[] args)  ` `   ``{ ` `      ``String input = ``"geeks for geeks"``; ` `      ``System.out.println(processWords(input)); ` `   ``} ` `} ` ` `  `// This code is contributed by Goutam Das `

## Python3

 `# An efficient Python3 implementation  ` `# of above approach  ` `charBuffer ``=` `[] ` ` `  `def` `processWords(``input``): ` `     `  `    ``""" we are splitting the input based on  ` `    ``spaces (s)+ : this regular expression  ` `    ``will handle scenarios where we have words  ` `    ``separated by multiple spaces """` `    ``s ``=` `input``.split(``" "``)  ` `     `  `    ``for` `values ``in` `s: ` `         `  `        ``""" charAt(0) will pick only the first ` `            ``character from the string and append ` `            ``to buffer """` `        ``charBuffer.append(values[``0``]) ` `    ``return` `charBuffer  ` `     `  `# Driver Code ` `if` `__name__ ``=``=` `'__main__'``: ` `    ``input` `=` `"geeks for geeks"` `    ``print``(``*``processWords(``input``), sep ``=` `"")  ` `     `  `# This code is contributed  ` `# by SHUBHAMSINGH10 `

## C#

 `// C# implementation of above approach ` `using` `System;  ` `using` `System.Text; ` ` `  `class` `GFG  ` `{ ` ` `  `private` `static` `StringBuilder charBuffer = ``new` `StringBuilder(); ` `     `  `public` `static` `String processWords(String input)  ` `{ ` `        ``/* we are splitting the input based on  ` `        ``spaces (s)+ : this regular expression  ` `        ``will handle scenarios where we have words  ` `        ``separated by multiple spaces */` `        ``String []s = input.Split(``' '``); ` `         `  `        ``foreach``(String values ``in` `s)  ` `        ``{ ` `             `  `            ``/* charAt(0) will pick only the first character  ` `            ``from the string and append to buffer */` `            ``charBuffer.Append(values); ` `        ``} ` `         `  `    ``return` `charBuffer.ToString(); ` `} ` `     `  `// Driver code ` `public` `static` `void` `Main()  ` `{ ` `    ``String input = ``"geeks for geeks"``; ` `    ``Console.WriteLine(processWords(input)); ` `} ` `} ` ` `  `// This code is contributed by Rajput-Ji `

Output:

```gfg
```

Another Approach 2:Using boundary checker, refer https://www.geeksforgeeks.org/get-first-letter-word-string-using-regex-java/

This article is contributed by Anuj Chauhan. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.