Open In App

String containing first letter of every word in a given string with spaces

Improve
Improve
Improve
Like Article
Like
Save Article
Save
Share
Report issue
Report

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 = "geeks for geeks""
Output : hc

Source: https://www.geeksforgeeks.org/amazon-interview-set-8-2/

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 is true. And if we encounter any character other than space, we will check the boolean variable, if it was set as true as copy that charter to the 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.

Implementation:

C++




// C++ program to find the string which contain
// the first character of each word of another
// string.
#include<bits/stdc++.h>
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<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.push_back(str[i]);
            v = false;
        }
    }
 
    return result;
}
 
// Driver code
int main()
{
    string str = "geeks for geeks";
    cout << firstLetterWord(str);
    return 0;
}


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


Javascript




<script>
 
    // Javascript 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.
    function firstLetterWord(str)
    {
        let result = "";
  
        // Traverse the string.
        let v = true;
        for (let 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;
    }
       
    let str = "geeks for geeks";
      document.write(firstLetterWord(str));
         
</script>


Output

gfg

Time Complexity: O(n)
Auxiliary space: O(1). 

Approach 1 : Reverse Iterative Approach 

This is simplest approach to getting first letter of every word of the string. In this approach we are using reverse iterative loop to get letter of words. If particular letter ( i ) is 1st letter of word or not is can be determined by checking pervious character that is (i-1). If the pervious letter is space (‘ ‘) that means (i+1) is 1st letter then we simply add that letter to the string. Except character at 0th position. At the end we simply reverse the string and function will return string which contain 1st letter of word of the string.

C++




#include <iostream>
using namespace std;
 
void get(string s)
{
    string str = "", temp = "";
    for (int i = s.length() - 1; i > 0; i--) {
        if (isalpha(s[i]) && s[i - 1] == ' ') {
            temp += s[i];
        }
    }
    str += s[0];
    for (int i = temp.length() - 1; i >= 0; i--) {
        str += temp[i];
    }
    cout << str << endl;
}
 
int main()
{
    string str = "geeks for geeks";
    string str2 = "Code of the    Day";
    get(str);
    get(str2);
    return 0;
}
// This code is contributed by sarojmcy2e


Java




public class GFG {
 
    public static void get(String s)
    {
        String str = "", temp = "";
        // checking condition
        for (int i = s.length() - 1; i > 0; i--) {
            if (Character.isLetter(s.charAt(i))
                && s.charAt(i - 1) == ' ') {
                temp
                    += s.charAt(i); // if consition match
                                    // added it to the string
            }
        }
        // adding 1st letter of string
        str += s.charAt(0);
        // adding remaning letters
        for (int i = temp.length() - 1; i >= 0; i--) {
            str += temp.charAt(i);
        }
        System.out.println(str);
    }
 
    public static void main(String[] args)
    {
        String str = "geeks for geeks";
        String str2 = "Code of the    Day";
        get(str); // function call
        get(str2); // function call
    }
}


Python3




def get(s):
    str = ""
    temp = ""
    for i in range(len(s)-1, 0, -1):
        if s[i].isalpha() and s[i-1] == ' ':
            temp += s[i]
    str += s[0]
    for i in range(len(temp)-1, -1, -1):
        str += temp[i]
    print(str)
 
 
str = "geeks for geeks"
str2 = "Code of the    Day"
get(str)
get(str2)


C#




using System;
 
public class GFG {
  public static void Get(string s)
  {
    string str = "", temp = "";
    // checking condition
    for (int i = s.Length - 1; i > 0; i--) {
      if (char.IsLetter(s[i]) && s[i - 1] == ' ') {
        temp += s[i]; // if consition match
        // added it to the string
      }
    }
    // adding 1st letter of string
    str += s[0];
    // adding remaning letters
    for (int i = temp.Length - 1; i >= 0; i--) {
      str += temp[i];
    }
    Console.WriteLine(str);
  }
 
  public static void Main(string[] args)
  {
    string str = "geeks for geeks";
    string str2 = "Code of the    Day";
    Get(str); // function call
    Get(str2); // function call
  }
}


Javascript




function get(s) {
  let str = "", temp = "";
  for (let i = s.length - 1; i > 0; i--) {
    if (s[i].match(/[a-zA-Z]/) && s[i - 1] === ' ') {
      temp += s[i];
    }
  }
  str += s[0];
  for (let i = temp.length - 1; i >= 0; i--) {
    str += temp[i];
  }
  console.log(str);
}
 
const str = "geeks for geeks";
const str2 = "Code of the    Day";
get(str);
get(str2);


Output

gfg
CotD

Time Complexity: O(n)
Auxiliary space: O(1). 

Approach 2: Using StringBuilder

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 split strings are stored in an array of strings. Then we can simply append the first character of each split string in the String Builder object.  

Implementation:

C++




// C++ implementation of the above approach
#include <bits/stdc++.h>
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<string> 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[0];
 
    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[0]);
        }
         
    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


Javascript




<script>
// Javascript implementation of the above approach
var charBuffer = "";
 
function 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 */
        var s = input.split(' ');
         
        s.forEach(element => {
        
            /* charAt(0) will pick only the first character
            from the string and append to buffer */
            charBuffer+=element[0];
        });
         
    return charBuffer;
}
 
// Driver code
var input = "geeks for geeks";
document.write( processWords(input));
 
// This code is contributed by rutvik_56.
</script>


Output

gfg

Time Complexity: O(n)
Auxiliary space: O(1). 

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



Last Updated : 23 Apr, 2023
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads