Talentd Logo
Talentd#1 Freshers Platform
Jobs
Learning
Career Tools
Talentd Logo
Talentd#1 Freshers Platform
Jobs
Learning
Career Tools
Talentd Logo
Talentd#1 Freshers Platform
Jobs
Learning
Career Tools
Talentd Logo
Talentd#1 Freshers Platform
Jobs
Learning
Career Tools
Talentd Logo
Talentd#1 Freshers Platform
Home
Talentd Logo
Talentd

Your trusted platform to ace any job interviews, craft the perfect resumes, and land your dream jobs.

P
Featured on
Product Hunt
▲455
All services are online

Products

  • Resume Review
  • Company Prep Pack
  • DSA Corner
  • Jobs
  • Internships
  • Fresher Jobs
  • Roadmaps
  • Tax Calculator

Resources

  • Articles
  • DRDO Internships

Support

  • Contact Us

DSA & Interview Prep

  • DSA Questions
  • DSA Sheets
  • Company Questions
  • Topics

Company

  • Companies Hiring
  • About
  • Contact
  • Advertisement

Legal

  • Privacy Policy
  • Terms & Conditions
  • Refund Policy
  • Delivery Policy

Popular Skills

Browse All Skills →

Popular Tags

Browse All Tags →

© 2025 Talentd.in - All rights reserved

Privacy PolicyTerms & Conditions
Talentd Logo
Talentd#1 Freshers Platform
Jobs
Learning
Career Tools
Talentd Logo
Talentd#1 Freshers Platform
Jobs
Learning
Career Tools
Talentd Logo
Talentd#1 Freshers Platform
Jobs
Learning
Career Tools
Talentd Logo
Talentd#1 Freshers Platform
Jobs
Learning
Career Tools
Talentd Logo
Talentd#1 Freshers Platform
DSA Corner
DashboardQuestionsTopicsCompaniesSheets

Talentd Logo
Talentd

Your trusted platform to ace any job interviews, craft the perfect resumes, and land your dream jobs.

P
Featured on
Product Hunt
▲455
All services are online

Products

  • Resume Review
  • Company Prep Pack
  • DSA Corner
  • Jobs
  • Internships
  • Fresher Jobs
  • Roadmaps
  • Tax Calculator

Resources

  • Articles
  • DRDO Internships

Support

  • Contact Us

DSA & Interview Prep

  • DSA Questions
  • DSA Sheets
  • Company Questions
  • Topics

Company

  • Companies Hiring
  • About
  • Contact
  • Advertisement

Legal

  • Privacy Policy
  • Terms & Conditions
  • Refund Policy
  • Delivery Policy

Popular Skills

Browse All Skills →

Popular Tags

Browse All Tags →

© 2025 Talentd.in - All rights reserved

Privacy PolicyTerms & Conditions
Talentd Logo
Talentd#1 Freshers Platform
Jobs
Learning
Career Tools
Talentd Logo
Talentd#1 Freshers Platform
Jobs
Learning
Career Tools
Talentd Logo
Talentd#1 Freshers Platform
Jobs
Learning
Career Tools
Talentd Logo
Talentd#1 Freshers Platform
Jobs
Learning
Career Tools
Talentd Logo
Talentd#1 Freshers Platform
DSA Corner
DashboardQuestionsTopicsCompaniesSheets
Talentd Logo
Talentd

Your trusted platform to ace any job interviews, craft the perfect resumes, and land your dream jobs.

P
Featured on
Product Hunt
▲455
All services are online

Products

  • Resume Review
  • Company Prep Pack
  • DSA Corner
  • Jobs
  • Internships
  • Fresher Jobs
  • Roadmaps
  • Tax Calculator

Resources

  • Articles
  • DRDO Internships

Support

  • Contact Us

DSA & Interview Prep

  • DSA Questions
  • DSA Sheets
  • Company Questions
  • Topics

Company

  • Companies Hiring
  • About
  • Contact
  • Advertisement

Legal

  • Privacy Policy
  • Terms & Conditions
  • Refund Policy
  • Delivery Policy

Popular Skills

Browse All Skills →

Popular Tags

Browse All Tags →

© 2025 Talentd.in - All rights reserved

Privacy PolicyTerms & Conditions
Talentd Logo
Talentd#1 Freshers Platform
Jobs
Learning
Career Tools
Talentd Logo
Talentd#1 Freshers Platform
Jobs
Learning
Career Tools
Talentd Logo
Talentd#1 Freshers Platform
Jobs
Learning
Career Tools
Talentd Logo
Talentd#1 Freshers Platform
Jobs
Learning
Career Tools
Talentd Logo
Talentd#1 Freshers Platform
DSA Corner
DashboardQuestionsTopicsCompaniesSheets
Talentd Logo
Talentd

Your trusted platform to ace any job interviews, craft the perfect resumes, and land your dream jobs.

P
Featured on
Product Hunt
▲455
All services are online

Products

  • Resume Review
  • Company Prep Pack
  • DSA Corner
  • Jobs
  • Internships
  • Fresher Jobs
  • Roadmaps
  • Tax Calculator

Resources

  • Articles
  • DRDO Internships

Support

  • Contact Us

DSA & Interview Prep

  • DSA Questions
  • DSA Sheets
  • Company Questions
  • Topics

Company

  • Companies Hiring
  • About
  • Contact
  • Advertisement

Legal

  • Privacy Policy
  • Terms & Conditions
  • Refund Policy
  • Delivery Policy

Popular Skills

Browse All Skills →

Popular Tags

Browse All Tags →

© 2025 Talentd.in - All rights reserved

Privacy PolicyTerms & Conditions
Talentd Logo
Talentd#1 Freshers Platform
Jobs
Learning
Career Tools
Talentd Logo
Talentd#1 Freshers Platform
Jobs
Learning
Career Tools
Talentd Logo
Talentd#1 Freshers Platform
Jobs
Learning
Career Tools
Talentd Logo
Talentd#1 Freshers Platform
Jobs
Learning
Career Tools
Talentd Logo
Talentd#1 Freshers Platform
DSA Corner
DashboardQuestionsTopicsCompaniesSheets
Back to Problems

821. Shortest Distance to a Character

Easy71.9% Acceptance
ArrayTwo PointersString
Asked by:
B
Bloomberg
ProblemSolutions (6)VideosCompanies (2)Notes

Problem Statement

Given a string s and a character c that occurs in s, return an array of integers answer where answer.length == s.length and answer[i] is the distance from index i to the closest occurrence of character c in s.

The distance between two indices i and j is abs(i - j), where abs is the absolute value function.

Example 1:

Input: s = "loveleetcode", c = "e"
Output: [3,2,1,0,1,0,0,1,2,2,1,0]
Explanation: The character 'e' appears at indices 3, 5, 6, and 11 (0-indexed).
The closest occurrence of 'e' for index 0 is at index 3, so the distance is abs(0 - 3) = 3.
The closest occurrence of 'e' for index 1 is at index 3, so the distance is abs(1 - 3) = 2.
For index 4, there is a tie between the 'e' at index 3 and the 'e' at index 5, but the distance is still the same: abs(4 - 3) == abs(4 - 5) = 1.
The closest occurrence of 'e' for index 8 is at index 6, so the distance is abs(8 - 6) = 2.

Example 2:

Input: s = "aaab", c = "b"
Output: [3,2,1,0]

Constraints:

  • 1 <= s.length <= 104
  • s[i] and c are lowercase English letters.
  • It is guaranteed that c occurs at least once in s.
Talentd Logo
Talentd

Your trusted platform to ace any job interviews, craft the perfect resumes, and land your dream jobs.

P
Featured on
Product Hunt
▲455
All services are online

Products

  • Resume Review
  • Company Prep Pack
  • DSA Corner
  • Jobs
  • Internships
  • Fresher Jobs
  • Roadmaps
  • Tax Calculator

Resources

  • Articles
  • DRDO Internships

Support

  • Contact Us

DSA & Interview Prep

  • DSA Questions
  • DSA Sheets
  • Company Questions
  • Topics

Company

  • Companies Hiring
  • About
  • Contact
  • Advertisement

Legal

  • Privacy Policy
  • Terms & Conditions
  • Refund Policy
  • Delivery Policy

Popular Skills

Browse All Skills →

Popular Tags

Browse All Tags →

© 2025 Talentd.in - All rights reserved

Privacy PolicyTerms & Conditions
A
Apple

Approach

The goal of #821 Shortest Distance to a Character is to compute, for each index in a string, the distance to the nearest occurrence of a given character. A common and efficient idea is to track the closest positions of the target character while scanning the string.

A popular strategy uses two passes. First, iterate from left to right while keeping track of the most recent position of the target character. For each index, calculate the distance from that last seen position. Then perform a second pass from right to left, updating the distance using the closest occurrence from the right side.

This approach ensures every character considers the nearest occurrence from both directions without nested loops. Since each element is processed a constant number of times, the algorithm runs efficiently with O(n) time complexity and uses O(n) space for the result array.

Complexity

ApproachTime ComplexitySpace Complexity
Two-pass traversal (left-to-right and right-to-left)O(n)O(n)

Video Solution Available

Nick White

View all video solutions

Solutions (6)

Two Pass Approach

This approach involves two passe through the string:

  1. First Pass: Traverse the string from left to right, keeping track of the most recent index of character c. Calculate the distance from the current index to this recent c.
  2. Second Pass: Traverse from right to left, updating the distances with the minimum between the current distance and the new distance to the closest c found on this traversal.

This ensures each element in the result is the minimum distance to any occurrence of c.

Time Complexity: O(n), where n is the length of the string since we go through the string twice.

Space Complexity: O(1) additional space for variables, aside from the output array.

CC++JavaPythonC#JavaScript
1#include <stdio.h>
2#include <stdlib.h>
3#include <string.h>
4#include <limits.h>
5
    
    

Explanation

This solution implements a two-pass approach. We first allocate an array of the same length as the input string to store our results. We use two loops:

  • In the first loop, traverse the string from left to right. If the character at the current index matches c, update prev to this index. Calculate the distance of the current index to prev and store it.
  • In the second loop, traverse from right to left. Update prev whenever again the character c is found. Then compute the new distance to the closest c using this prev and update the result if necessary.

Video Solutions

Watch expert explanations and walkthroughs

LeetCode Shortest Distance to a Character Solution Explained - Java

Nick White
11:1410,953 views

Asked By Companies

2 companies
B
Bloomberg
A
Apple

Prepare for Interviews

Practice problems asked by these companies to ace your technical interviews.

Explore More Problems

Notes

Personal Notes

Jot down your thoughts, approach, and key learnings

0 characters

Similar Problems

Container With Most WaterMedium
3SumMedium
3Sum ClosestMedium
4SumMedium
More similar problems

Related Topics

ArrayTwo PointersString

Problem Stats

Acceptance Rate71.9%
DifficultyEasy
Companies2

Practice on LeetCode

Solve with full IDE support and test cases

Solve Now

Frequently Asked Questions

Why do we use two passes in Shortest Distance to a Character?

A single pass only captures the nearest occurrence from one direction. By scanning both left-to-right and right-to-left, we ensure that each index considers the closest target character from either side.

Is Shortest Distance to a Character asked in coding interviews?

Yes, this type of problem is common in coding interviews because it tests string traversal, distance calculation, and efficient scanning techniques. Variations of this question may appear in interviews at major tech companies.

What data structure is best for Shortest Distance to a Character?

An array is typically used to store the distance for each index in the string. Along with the result array, a variable is maintained to track the most recent index of the target character during traversal.

What is the optimal approach for Shortest Distance to a Character?

The optimal approach uses two passes over the string. First scan from left to right to track the closest occurrence on the left, then scan from right to left to account for the nearest occurrence on the right. This ensures each position gets the minimum distance efficiently.

6
int
*
shortestToChar
(
char
*
s
,
char
c
,
int
*
returnSize
)
{
7
int
len
=
strlen
(
s
)
;
8
*
returnSize
=
len
;
9
int
*
result
=
(
int
*
)
malloc
(
len
*
sizeof
(
int
)
)
;
10
int
prev
=
-
INT_MAX
;
11
12
// First pass - left to right
13
for
(
int
i
=
0
;
i
<
len
;
i
++
)
{
14
if
(
s
[
i
]
==
c
)
{
15
prev
=
i
;
16
}
17
result
[
i
]
=
i
-
prev
;
18
}
19
20
// Second pass - right to left
21
prev
=
INT_MAX
;
22
for
(
int
i
=
len
-
1
;
i
>=
0
;
i
--
)
{
23
if
(
s
[
i
]
==
c
)
{
24
prev
=
i
;
25
}
26
result
[
i
]
=
(
result
[
i
]
<
prev
-
i
)
?
result
[
i
]
:
prev
-
i
;
27
}
28
return
result
;
29
}