Open In App
Related Articles

Put spaces between words starting with capital letters

Improve Article
Improve
Save Article
Save
Like Article
Like

You are given an array of characters which is basically a sentence. However, there is no space between different words and the first letter of every word is in uppercase. You need to print this sentence after following amendments: 

  1. Put a single space between these words. 
  2. Convert the uppercase letters to lowercase.

Examples: 

Input : BruceWayneIsBatman
Output : bruce wayne is batman
Input : You
Output : you
Recommended Practice

We check if the current character is in uppercase then print ” “(space) and convert it into lowercase. 

Implementation:

C++




// C++ program to put spaces between words starting
// with capital letters.
#include <iostream>
using namespace std;
  
// Function to amend the sentence
void amendSentence(string str)
{
    // Traverse the string
    for(int i=0; i < str.length(); i++)
    {
        // Convert to lowercase if its
        // an uppercase character
        if (str[i]>='A' && str[i]<='Z')
        {
            str[i]=str[i]+32;
  
            // Print space before it
            // if its an uppercase character
            if (i != 0)
                cout << " ";
  
            // Print the character
            cout << str[i];
        }
  
        // if lowercase character
        // then just print
        else
            cout << str[i];
    }
}
  
// Driver code
int main()
{
    string str ="BruceWayneIsBatman";
    amendSentence(str);
    return 0;
}

Java




// Java program to put spaces between words starting
// with capital letters.
  
import java.util.*;
import java.lang.*;
import java.io.*;
  
class AddSpaceinSentence
{
    // Function to amend the sentence
    public static void amendSentence(String sstr)
    {
        char[] str=sstr.toCharArray();
          
        // Traverse the string
        for (int i=0; i < str.length; i++)
        {
            // Convert to lowercase if its
            // an uppercase character
            if (str[i]>='A' && str[i]<='Z')
            {
                str[i] = (char)(str[i]+32);
                  
                // Print space before it
                // if its an uppercase character
                if (i != 0)
                    System.out.print(" ");
      
                // Print the character
                System.out.print(str[i]);
            }
      
            // if lowercase character
            // then just print
            else
            System.out.print(str[i]);
        }
    }     
      
    // Driver Code
    public static void main (String[] args) 
    {
        String str ="BruceWayneIsBatman";
        amendSentence(str);
    }
}

Python3




# Python3 program to put spaces between words 
# starting with capital letters.
  
# Function to amend the sentence
def amendSentence(string):
    string = list(string)
  
    # Traverse the string
    for i in range(len(string)):
  
        # Convert to lowercase if its
        # an uppercase character
        if string[i] >= 'A' and string[i] <= 'Z':
            string[i] = chr(ord(string[i]) + 32)
  
            # Print space before it
            # if its an uppercase character
            if i != 0:
                print(" ", end = "")
  
            # Print the character
            print(string[i], end = "")
  
        # if lowercase character
        # then just print
        else:
            print(string[i], end = "")
  
# Driver Code
if __name__ == "__main__":
    string = "BruceWayneIsBatman"
    amendSentence(string)
  
# This code is contributed by
# sanjeev2552

C#




// C# program to put spaces between words
// starting with capital letters.
using System;
          
public class GFG {
      
    // Function to amend the sentence
    public static void amendSentence(string sstr)
    {
        char[] str = sstr.ToCharArray();
          
        // Traverse the string
        for (int i = 0; i < str.Length; i++)
        {
              
            // Convert to lowercase if its
            // an uppercase character
            if (str[i] >= 'A' && str[i] <= 'Z')
            {
                str[i] = (char)(str[i] + 32);
                  
                // Print space before it
                // if its an uppercase
                // character
                if (i != 0)
                    Console.Write(" ");
      
                // Print the character
                Console.Write(str[i]);
            }
      
            // if lowercase character
            // then just print
            else
                Console.Write(str[i]);
        }
    
      
    // Driver Code
    public static void Main () 
    {
        string str ="BruceWayneIsBatman";
          
        amendSentence(str);
    }
          
}
  
// This code is contributed by Sam007.

Javascript




<script>
  
    // JavaScript program to put spaces between words
    // starting with capital letters.
      
    // Function to amend the sentence
    function amendSentence(sstr)
    {
        let str = sstr.split('');
            
        // Traverse the string
        for (let i = 0; i < str.length; i++)
        {
                
            // Convert to lowercase if its
            // an uppercase character
            if (str[i].charCodeAt() >= 'A'.charCodeAt() &&
            str[i].charCodeAt() <= 'Z'.charCodeAt())
            {
              str[i] = 
              String.fromCharCode(str[i].charCodeAt() + 32);
                    
                // Print space before it
                // if its an uppercase
                // character
                if (i != 0)
                    document.write(" ");
        
                // Print the character
                document.write(str[i]);
            }
        
            // if lowercase character
            // then just print
            else
                document.write(str[i]);
        }
    
      
    let str ="BruceWayneIsBatman";
            
      amendSentence(str);
      
</script>

Output

bruce wayne is batman






Time complexity: O(n)
Auxiliary Space: O(1)

Put spaces between words starting with capital letters using Regex.

C++




// C++ Program to solve the above problem
#include <bits/stdc++.h>
using namespace std;
  
// Function to insert spaces between words
void putSpace(string input) {
    // Define a regex pattern to match words 
   // starting with a capital letter
    regex pattern("[A-Z][a-z]*");
    smatch match;
    vector<string> words;
  
    // Find all matches using regex
    while (regex_search(input, match, pattern)) {
        words.push_back(match.str());
        input = match.suffix();
    }
  
    // Change the first letter of each word to lowercase
    for (int i = 0; i < words.size(); i++) {
        words[i][0] = tolower(words[i][0]);
    }
  
    // Print the words with spaces
    for (int i = 0; i < words.size(); i++) {
        cout << words[i] << " ";
    }
    cout << endl;
}
  
// Driver program
int main() {
    string input = "BruceWayneIsBatman";
    putSpace(input);
    return 0;
}
  
// THIS CODE IS CONTRIBUTED BY KIRTI AGARWAL

Java




// Java code for the above approach
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
  
class GFG {
    // Function to insert spaces between words
    public static void putSpace(String input) {
        // Define a regex pattern to match words starting with a capital letter
        Pattern pattern = Pattern.compile("[A-Z][a-z]*");
        Matcher matcher = pattern.matcher(input);
        List<String> words = new ArrayList<>();
  
        // Find all matches using regex
        while (matcher.find()) {
            words.add(matcher.group());
        }
  
        // Change the first letter of each word to lowercase
        for (int i = 0; i < words.size(); i++) {
            String word = words.get(i);
            words.set(i, word.substring(0, 1).toLowerCase() + word.substring(1));
        }
  
        // Print the words with spaces
        for (String word : words) {
            System.out.print(word + " ");
        }
        System.out.println();
    }
  
    // Driver program
    public static void main(String[] args) {
        String input = "BruceWayneIsBatman";
        putSpace(input);
    }
}
// This code is contributed by Kirti Agarwal

Python3




import re
  
def putSpace(input):
  
    # regex [A-Z][a-z]* means any string starting
    # with capital character followed by many
    # lowercase letters
    words = re.findall('[A-Z][a-z]*', input)
  
    # Change first letter of each word into lower
    # case
    for i in range(0, len(words)):
        words[i] = words[i][0].lower()+words[i][1:]
    print(' '.join(words))
  
  
# Driver program
if __name__ == "__main__":
    input = 'BruceWayneIsBatman'
    putSpace(input)

C#




using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
  
public class GFG
{
    // Function to insert spaces between words
    // Define a regex pattern to match words starting with a capital letter
    public static void PutSpace(string input)
    {
        Regex pattern = new Regex("[A-Z][a-z]*");
        Match match;
        List<string> words = new List<string>();
  
        // Find all matches using regex
        while ((match = pattern.Match(input)).Success)
        {
            words.Add(match.Value);
            input = input.Substring(match.Index + match.Length);
        }
  
        // Change the first letter of each word to lowercase
        for (int i = 0; i < words.Count; i++)
        {
            char[] wordChars = words[i].ToCharArray();
            wordChars[0] = char.ToLower(wordChars[0]);
            words[i] = new string(wordChars);
        }
  
        // Print the words with spaces
        foreach (string word in words)
        {
            Console.Write(word + " ");
        }
        Console.WriteLine();
    }
  
    // Driver program
    public static void Main(string[] args)
    {
        string input = "BruceWayneIsBatman";
        PutSpace(input);
    }
}

Javascript




function putSpace(input) {
  // regex [A-Z][a-z]* means any string starting
  // with capital character followed by many
  // lowercase letters
  const regex = new RegExp('[A-Z][a-z]*', 'g');
  const words = input.match(regex);
  
  // Change first letter of each word into lower
  // case
  for (let i = 0; i < words.length; i++) {
    words[i] = words[i][0].toLowerCase() + words[i].substring(1);
  }
  
  console.log(words.join(' '));
}
  
// Driver program
const input = 'BruceWayneIsBatman';
putSpace(input);

Output

bruce wayne is batman







Time complexity: O(n)
Auxiliary Space: O(n)

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


Last Updated : 15 Sep, 2023
Like Article
Save Article
Similar Reads
Related Tutorials