You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写程序计算给定字符连续出现位置间的间隔长度

Calculate Gaps Between Consecutive Character Occurrences

Hey Maria, let's get your program working exactly how you need it! Right now, your code only finds the distance between the first and last time your character shows up—but we need to calculate the gap between every consecutive pair of occurrences, where adjacent positions count as a gap of 1. Here's a step-by-step solution:

Step 1: Collect All Occurrence Positions

First, we need to grab every index where your target character appears in the text. We can use enumerate() to loop through the text and track both characters and their positions:

positions = [i for i, char in enumerate(text) if char == find]

Step 2: Handle Edge Cases

If the character shows up fewer than twice, there are no gaps to calculate—we should let the user know that upfront:

if len(positions) < 2:
    print(f"The character '{find}' doesn't appear at least twice in the text.")

Step 3: Calculate Consecutive Gaps

Once we have all positions, we loop through them and subtract each position from the one that comes right after it. This gives us the gap length (and since adjacent positions are 1 apart, this automatically gives a gap of 1 for adjacent occurrences—perfect for your requirement!):

gaps = [positions[i] - positions[i-1] for i in range(1, len(positions))]

Full Working Code

Putting it all together, here's the complete program with clear output:

text = input('Enter text: ')
find = input('Enter a search character: ')

# Gather all positions of the search character
positions = [i for i, char in enumerate(text) if char == find]

if len(positions) < 2:
    print(f"The character '{find}' doesn't appear at least twice in the text.")
else:
    # Calculate gaps between consecutive occurrences
    gaps = [positions[i] - positions[i-1] for i in range(1, len(positions))]
    
    # Print the results in a readable format
    print(f"\nAll gaps between consecutive occurrences of '{find}':")
    for gap_num, gap_length in enumerate(gaps, start=1):
        print(f"Gap {gap_num}: {gap_length}")
    
    # Optional: Show a breakdown of positions and gaps
    print("\nPosition breakdown:")
    for i in range(len(positions) - 1):
        print(f"From position {positions[i]} to {positions[i+1]}: gap of {gaps[i]}")

Example Output

If you input the text aabccddeaa and search for a, the program will output:

All gaps between consecutive occurrences of 'a':
Gap 1: 1
Gap 2: 7
Gap 3: 1

Position breakdown:
From position 0 to 1: gap of 1
From position 1 to 8: gap of 7
From position 8 to 9: gap of 1

This matches exactly what you need—each consecutive pair's gap is calculated correctly, including the 1 for adjacent occurrences.

内容的提问来源于stack exchange,提问作者Maria

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 13:32:28