# Pattern – 21: Hollow Rectangle Pattern

Problem Statement: Given an integer N, print the following pattern :

Here, N = 5.

Examples:

```Input Format: N = 3
Result:
***
* *
***

Input Format: N = 6
Result:
******
*    *
*    *
*    *
*    *
******
```

### Solution

Disclaimer: Don’t jump directly to the solution, try it out yourself first.

Approach

There are 4 general rules for solving a pattern-based question :

• We always use nested loops for printing the patterns. For the outer loop, we count the number of lines/rows and loop for them.
• Next, for the inner loop, we focus on the number of columns and somehow connect them to the rows by forming a logic such that for each row we get the required number of columns to be printed.
• We print the numbers inside the inner loop.
• Observe symmetry in the pattern or check if a pattern is a combination of two or more similar patterns.

This problem is a very simple one where we just have to print a hollow rectangle. So, after observation, we see that the stars are only printed at the border of the rectangle, and on the rest of the positions, spaces are printed. Hence, the outer loop and inner loop both will loop for n times and in the inner loop we add a condition that if the row index or column index is equal to 0 or n-1, then stars should get printed otherwise spaces should be printed.

Code

## C++ Code

``````#include <bits/stdc++.h>
using namespace std;

void pattern21(int n)
{
// outer loop for no. of rows.
for(int i=0;i<n;i++){

// inner loop for printing the stars at borders only.
for(int j=0;j<n;j++){

if(i==0 || j==0 || i==n-1 || j==n-1)
cout<<"*";

// if not border index, print space.
else cout<<" ";
}

// As soon as the stars for each iteration are printed, we move to the
// next row and give a line break otherwise all stars
// would get printed in 1 line.
cout<<endl;
}

}

int main()
{
// Here, we have taken the value of N as 5.
// We can also take input from the user.
int N = 5;

pattern21(N);

return 0;
}
``````

Output

*****
*    *
*    *
*    *
*****

## Java Code

``````class Main {

static void pattern21(int n)
{
// outer loop for no. of rows.
for(int i=0;i<n;i++){

// inner loop for printing the stars at borders only.
for(int j=0;j<n;j++){

if(i==0 || j==0 || i==n-1 || j==n-1)
System.out.print("*");

// if not border index, print space.
else System.out.print(" ");
}

// As soon as the stars for each iteration are printed, we move to the
// next row and give a line break otherwise all stars
// would get printed in 1 line.
System.out.println();
}
}

public static void main(String[] args) {

// Here, we have taken the value of N as 5.
// We can also take input from the user.
int N = 5;
pattern21(N);
}
}
``````

Output

*****
*    *
*    *
*    *
*****