🍪

Essential cookies keep authentication working. With your permission, we also use analytics to improve the product. Privacy Policy

DDataEngPrep.tech
Home
PricingBlog
Sign InStart Free→
Home/Questions/Python/Coding/Write a Python function to find the first non-repeating character in a string.

Write a Python function to find the first non-repeating character in a string.

Python/Codingeasy2 min read

Reviewed by Aditya Kumar · Last reviewed 2026-03-24

To find the first non repeating character, the most efficient approach is a two pass strategy using a hash map (dictionary) to store character frequencies. Mechanics and Why The solution involves two…

🤖 Analyze Your Answer
Frequency
Low
Asked at 3 companies
Category
179
questions in Python/Coding
Difficulty Split
127E|24M|28H
in this category
Total Bank
1,863
across 7 categories
Part of the Python for Data Engineers Interview Preparation Hub
Explore Python for Data Engineers Hub→
Reported in Interview Loops AtClick to view company-specific questions
🏢 Delivery Hero Interview Hub→🏢 Dunnhumby Interview Hub→🏢 Fragma Data Systems Interview Hub→
Interview Pro Tip

Red Flag: O(n²) solution (nested loops). Pro-Move: 'Counter is readable; for production we'd handle Unicode normalization (NFD) since users expect á and a to match'—shows production edge-case thinking.

Key Concepts Tested
python

Why This Question Matters

This easy-level Python/Coding question appears frequently in data engineering interviews at companies like Delivery Hero, Dunnhumby, Fragma Data Systems. While less common, it tests deeper understanding that distinguishes strong candidates. Mastering the underlying concepts (python) will help you answer variations of this question confidently.

How to Approach This

Start by clearly defining the core concept being asked about. Interviewers want to see that you understand the fundamentals before diving into implementation details. Structure your answer with a definition, then explain the practical application with a concise example. The expert answer includes a code example that demonstrates the implementation pattern.

Expert Answer
454 wordsIncludes code

To find the first non-repeating character, the most efficient approach is a two-pass strategy using a hash map (dictionary) to store character frequencies.

Mechanics and Why

The solution involves two distinct passes over the input string.
  • First Pass (Frequency Count): Iterate through the string once to build a frequency map (e.g., a Python dictionary or collections.Counter). For each character encountered, increment its count in the map. This pass takes O(N) time, where N is the length of the string.
  • Second Pass (Find First Unique): Iterate through the string again, maintaining the original character order. For each character, check its count in the frequency map. The first character encountered with a count of 1 is the answer. If the loop completes without finding such a character, it means no non-repeating character exists. This pass also takes O(N) time.
  • A single pass is insufficient because you cannot definitively know if a character is non-repeating until you've scanned the entire string. A character encountered early might repeat later.

    Example Implementation

    from collections import Counter
    

    def first_non_repeating(s: str) -> str | None:
    if not s:
    return None # Handle empty string

    # First pass: Count character frequencies
    counts = Counter(s)

    # Second pass: Find the first character with a count of 1
    for char in s:
    if counts[char] == 1:
    return char

    return None # No non-repeating character found

    Complexity Analysis

    * Time Complexity: O(N), where N is the length of the string. This is because we iterate over the string twice. * Space Complexity: O(K), where K is the number of unique characters in the string. In the worst case (all characters are unique), K can be up to N. For ASCII characters, K is at most 256. This space is used to store the frequency map.

    Considerations and Best Practices

    * Edge Cases: The function should gracefully handle an empty string (returning None) and strings where all characters repeat (also returning None). * Case Sensitivity: Clarify with the interviewer if 'A' and 'a' should be treated as the same or different characters. The provided solution is case-sensitive. * Character Set: The approach works for both ASCII and Unicode characters, as Python dictionaries handle various character types. * Pythonic Approach: collections.Counter is highly recommended for its conciseness and efficiency in counting frequencies. For older Python versions (pre-3.7) where standard dictionaries didn't guarantee insertion order, collections.OrderedDict could be used for the frequency map to ensure the "first" non-repeating character is correctly identified, though modern Python dicts preserve insertion order.

    In the interview, also mention…

    Always clarify assumptions: what should be returned for an empty string or if no non-repeating character exists? Discuss case sensitivity and the expected character set.
    ⚡
    Pro Tip

    Red Flag: O(n²) solution (nested loops). Pro-Move: 'Counter is readable; for production we'd handle Unicode normalization (NFD) since users expect á and a to match'—shows production edge-case thinking.

    Get The Complete 2026 FDE, AI & DE Master Vault (All 9 PDF Volumes)
    FDE Interview Guide, FastMCP & RAG Playbook, and 7-Volume DE Vault with 1,863+ answers →
    ⭐ Save 45%
    Related Study Guide
    🐍

    PySpark Interview Questions: Complete Guide (2026)

    Master 179 python/coding questions with expert answers. Real questions from 97+ companies.

    22 min read →

    Related Python/Coding Questions

    easyWhat are traits in Scala, and how are they different from classes?FreemediumWrite a Python function to check if a string is a palindrome.FreeeasyWhat is the difference between a list and a tuple in Python?FreeeasyExplain the difference between shallow copy and deep copy in Python.FreeeasyWhat are decorators in Python, and how do they work?Free

    Level up your prep

    Recommended
    Educative
    Educative Unlimited

    800+ hands-on courses — Grokking System Design, Coding Patterns, and AI mock interviews for your DE loop.

    Start learning →

    Some links below are affiliate links. If you buy through them we may earn a small commission at no extra cost to you — it helps keep DataEngPrep free.

    According to DataEngPrep.tech, this is one of the most frequently asked Python/Coding interview questions, reported at 3 companies. DataEngPrep.tech maintains an editor-reviewed database of 1,863 data engineering interview questions across 7 categories.

    ← Back to all questionsMore Python/Coding questions →
    Topic Hubs
    All Topic Hubs (12 Competencies) →All 1,863+ QuestionsSQL Interview QuestionsApache Spark QuestionsPySpark QuestionsPython for Data EngineersSystem Design InterviewData Modeling & WarehousingStreaming (Kafka/Flink)SQL Window FunctionsETL Pipeline Design
    Company Hubs
    All Company Hubs (100+ Companies) →AmazonGoogleMetaDatabricksSnowflakeNetflixUberStripeMicrosoftAppleGoldman SachsAWS Engineering
    Academies & Guides
    All Guides & ArticlesData Engineering AcademyForward Deployed AI AcademyClient Simulation StudioApache Airflow QuestionsAzure Data EngineerBehavioral & STAR MethodCloud & Distributed Tools
    AI Tools & Products
    Answer Analyzer (Free)AI Mock InterviewsSQL PlaygroundATS Resume AnalyzerOffline PDF Answer VaultsMembership & Pricing
    Company
    About & Editorial PolicyContact UsAI DisclosureDisclaimerTerms of ServicePrivacy Policy
    © 2026 DataEngPrep.tech. All rights reserved.
    AboutBlogContactDisclaimer