A symmetric alphabet pyramid prints centered palindromic rows: each line climbs from A to a peak letter, then mirrors back down to A without repeating the peak.
Remember
Rule: spaces + A..i + (i−1)..A
A
ABA
ABCBA
ABCDCBA
ABCDEDCBA ← top = 'E'
Three stages per row: leading spaces for centering, ascending A..i, then descending (i − 1)..A. Compare with Program 24 (similar palindromes) and Program 31 (hollow V).
Approach
How to Solve It
Two ways to emit the same pyramid — a classic bridge variable (--n), or an explicit descending loop.
Method
Idea
Best for
Bridge variable
After A..i, set n = k - 1 and print alpha[--n]
Matching classic textbook / exam style
Explicit mirror
Loop p from i - 1 down to 0
Clearer demos once the skip-center rule clicks
Pseudocode
Pseudocode
end = top - 'A'
for i from 0 to end:
print (end - i) spaces
for k from 0 to i: print alpha[k] // A..i
for p from i-1 to 0: print alpha[p] // (i-1)..A
print newline
Cheat sheet
Goal
Pattern
Top index
int end = top - 'A'; (4 for E)
Rows
for (int i = 0; i <= end; i++)
Leading spaces
for (int j = end; j > i; j--) print(' ');
Ascending half
for (int k = 0; k <= i; k++) print(alpha[k]);
Bridge mirror
int n = k - 1; for (m = 0; m < i; m++) print(alpha[--n]);
Explicit mirror
for (int p = i - 1; p >= 0; p--) print(alpha[p]);
Letters on row i
2i + 1 (peak printed once)
Printing Letters vs Starting a New Line
API
Effect
Use for
System.out.print
Stays on the same line
Each space and letter
System.out.println
Ends the current line
After spaces + ascending + mirror finish a row
Print cells without a newline, then end the row once.
Try it
Live Preview
Change the top letter and the centered palindrome pyramid updates instantly — row i has 2i + 1 letters.
One letter from A to F. Tap a chip or type a letter — use a monospace view for centering.
Live resultTop E · 5 rows · base 9 letters
A
ABA
ABCBA
ABCDCBA
ABCDEDCBA
Trace
Worked Walkthrough — Top = E (end = 4)
Trace padding, ascending half, and mirrored descending half for each row.
i
Spaces
Ascending
Mirror
Printed row
0
4
A
(none)
A
1
3
AB
A
ABA
2
2
ABC
BA
ABCBA
3
1
ABCD
CBA
ABCDCBA
4
0
ABCDE
DCBA
ABCDEDCBA
After ascending, k = i + 1, so n = k - 1 = i. The first --n lands on i - 1.
Code
Java Programs
Three complete programs: fixed A–E with a bridge variable, top-letter input, and an explicit mirror loop. Use View Output to reveal sample results.
Example 1 — Fixed A–E
Matches the reference logic using a bridge variable n = k - 1 to print the descending half.
Java
public class SymmetricAlphabetPyramid {
public static void main(String[] args) {
int i, j, k, m, n;
char[] alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".toCharArray();
for (i = 0; i <= 4; i++) {
for (j = 4; j > i; j--)
System.out.print(" ");
for (k = 0; k <= i; k++)
System.out.print(alpha[k]);
n = k - 1;
for (m = 0; m < i; m++)
System.out.print(alpha[--n]);
System.out.println();
}
}
}
Output
A
ABA
ABCBA
ABCDCBA
ABCDEDCBA
How It Works
1. Pad for centering. Spaces run from 4 down while j > i.
2. Ascend to the peak. Print alpha[0..i] — when i = 2, that is ABC.
3. Bridge past the peak. After the ascending loop, k = i + 1, so n = k - 1 = i.
4. Mirror without a double center. Each --n prints the previous letter — for i = 2, that yields BA and the full row ABCBA.
Example 2 — Top Letter Input
The loops adapt to the new size automatically. Prefer validating a single A–Z character in real apps.
Java
import java.util.Scanner;
public class SymmetricAlphabetPyramidInput {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Enter top letter (like E): ");
char top = sc.next().toUpperCase().charAt(0);
int end = top - 'A';
char[] alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".toCharArray();
for (int i = 0; i <= end; i++) {
for (int j = end; j > i; j--)
System.out.print(" ");
int k;
for (k = 0; k <= i; k++)
System.out.print(alpha[k]);
int n = k - 1;
for (int m = 0; m < i; m++)
System.out.print(alpha[--n]);
System.out.println();
}
sc.close();
}
}
Output (when user enters C)
Enter top letter (like E): C
A
ABA
ABCBA
How It Works
1. Scale with end.end = top - 'A' drives padding, ascending, and mirror loops together.
2. Same core. For top = C you get three centered rows ending at ABCBA.
3. Safer input tip. Prefer:
Safer input
if (!sc.hasNext()) {
System.out.println("Enter one letter from A to Z.");
return;
}
String raw = sc.next().trim().toUpperCase();
if (raw.length() != 1 || raw.charAt(0) < 'A' || raw.charAt(0) > 'Z') {
System.out.println("Enter one letter from A to Z.");
return;
}
char top = raw.charAt(0);
Example 3 — Explicit Mirror Loop
Often easier to read: after printing A..i, loop p from i - 1 down to 0.
Java
public class SymmetricAlphabetPyramidExplicit {
public static void main(String[] args) {
int end = 4;
char[] alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".toCharArray();
for (int i = 0; i <= end; i++) {
for (int j = end; j > i; j--)
System.out.print(" ");
for (int k = 0; k <= i; k++)
System.out.print(alpha[k]);
for (int p = i - 1; p >= 0; p--)
System.out.print(alpha[p]);
System.out.println();
}
}
}
Output
A
ABA
ABCBA
ABCDCBA
ABCDEDCBA
How It Works
1. Same three stages. Spaces, then ascending, then mirror — only the mirror syntax changes.
2. Peak stays unique.p starts at i - 1, so the center letter is never printed twice.
3. Same output. Matches the bridge-variable version exactly.
Edge Cases & Pitfalls
Check these before calling the solution done.
Mirror from i
Double center letter
If the descending loop starts at i instead of i - 1, you get ABCCBA. Skip the peak.
Spaces off
Left-aligned pyramid
Keep for (j = end; j > i; j--). Starting at end - 1 or using >= shifts the centering.
println inside
Column of characters
If println is inside any of the three loops, each character lands on its own line. Use print until the row is done.
top = A
Single A
When end = 0, you print one row: A (no spaces, no mirror). A good sanity check.
Wrong n
Bridge off by one
After ascending, k is already i + 1. Use n = k - 1, then --n — not n = k.
Bad input
Validate one letter
Trim, uppercase, and require length 1 in A–Z — reject empty or multi-character tokens.
Analysis
Time and Space Complexity
Program
Time
Extra space
Bridge variable (Examples 1–2)
O(n²)
O(1) (plus the fixed alphabet table)
Explicit mirror (Example 3)
O(n²)
O(1)
For n = end + 1 rows, each row prints O(n) spaces and letters — quadratic in n.
Remember
Key Takeaways
Rule: spaces + A..i + (i − 1)..A.
Skip the peak once: mirror starts at i - 1 (or --n after n = k - 1).
Break the row: call println only after all three stages.
Complexity:O(n²) time; O(1) extra space.
One line: pad, print A up to the peak, then mirror back to A without reprinting the peak.
Frequently Asked Questions
It prints A..i ascending, then prints (i-1)..A descending. This mirrors the left half without repeating the center letter.
After the ascending loop, k is one past the peak letter. Setting n = k-1 makes n equal the peak, and then --n starts the descending half from the previous letter.
The padding shifts each row to the right so the pyramid is centered under the widest row.
O(n²) for n rows because each row prints O(n) spaces and letters.
After printing A..i, the mirror part starts from i-1 down to A. That avoids duplicating the peak letter.
System.out.print stays on the same line. System.out.println ends the current line. Spaces and letters use print; the row break uses println after all three stages.
Ascending prints i+1 letters and descending prints i letters, so the row has 2i+1 letters before counting spaces.
Program 18 is another palindromic alphabet pyramid approach. This page follows the classic bridge-variable style with n = k-1 and --n.
🤔
Did you know?
Each row has three stages: leading spaces for centering, then letters A..i ascending, then letters (i-1)..A descending. The reference keeps a bridge variable n = k - 1 after the ascending loop and prints --n to avoid duplicating the center letter.