Home » Interview Questions » String Interview Questions » Print string of odd length in ‘X’ format

Print string of odd length in ‘X’ format


()

Given a string of odd length, write a function that will print the string in X format as show below

Example

INPUT
s = “abcde”

OUTPUT

a            e
b     d
c
b     d
a             e

Algorithm

1. Traverse the string with two varaiables, i and j, where i is increasing and j is decreasing

2. Print the upper part ie, if(i<j)
   a. Print i spaces
b. print ith character
c. Print j-i-1 spaces
d. Print jth character

3. Print the centre point ie, if(i==j)
a. Print i spaces
b. Print middle character

4. Print the lower part ie, if(i>j)
a. Print j spaces
b. print ith character
c. Print j-i-1 spaces
d. Print jth character

C++ Program

#include<iostream>
using namespace std;
 
// Function to print given string in cross pattern
// Length of string must be odd
void printXFormat(string s)
{
    int len = s.length();
 
    // i varaible from start to end, j from end to start
    for (int i=0,j=len-1; i<=len,j>=0; i++,j--)
    {
        //Printing upper part, ie till middle element
        if (i<j)
        {
            // Print i spaces
            for (int x=0; x<i; x++)
                cout << " ";
 
            // Print i'th character
            cout << s[i];
 
            // Print j-i-1 spaces
            for (int x=0; x<j-i-1; x++)
                cout << " ";
 
            // Print j'th character
            cout << s[j] << endl;
        }
 
        // To print center point
        if (i==j)
        {
            // Print i spaces
            for (int x=0; x<i; x++)
                cout << " ";
 
            // Print middle character
            cout << s[i] << endl;
        }
 
        // To print lower part
        else if (i>j)
        {
            // Print j spances
            for (int x = j-1; x>=0; x--)
                cout << " ";
 
            // Print j'th character
            cout << s[j];
 
            // Print i-j-1 spaces
            for (int x=0; x<i-j-1; x++)
                cout << " ";
 
            // Print i'h character
            cout << s[i] << endl;
        }
    }
}
 

int main()
{
    printXFormat("abcde");
    return 0;
}

Try It

READ  Reorganize String

 

How useful was this post?

Click on a star to rate it!

Average rating / 5. Vote Count

No votes so far! Be the first to rate this post.

As you found this post useful...

Follow us on social media!

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?

Array Interview Questions
Graph Interview Questions
LinkedList Interview Questions
String Interview Questions
Tree Interview Questions