Open In App

Put spaces between words starting with capital letters

Last Updated : 15 Sep, 2023
Improve
Improve
Like Article
Like
Save
Share
Report

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)



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads