Python – Minimum Sum of Consecutive Characters

In Python programming, finding the minimum sum of consecutive characters in a string involves identifying the contiguous substring that produces the smallest sum when considering ASCII values. This problem is commonly encountered in string processing and optimization tasks.

Understanding the Problem

The task is to find a contiguous substring within a given string that yields the minimum sum when we add up the ASCII values of its characters. For example, in the string "abcde", we need to examine all possible substrings and determine which one has the lowest ASCII sum.

Python provides several built?in functions to solve this efficiently. The ord() function returns the ASCII value of a character, while loops and conditional statements help iterate through the string and perform necessary calculations.

Using Brute Force Approach

The brute force method examines all possible contiguous substrings by using nested loops. The outer loop determines the starting index, and the inner loop determines the ending index of each substring.

Algorithm Steps

Step 1: Initialize min_sum with infinity to track the minimum sum.
Step 2: Use nested loops to generate all possible substrings.
Step 3: Calculate the sum of ASCII values for each substring.
Step 4: Update min_sum if a smaller sum is found.
Step 5: Return the minimum sum found.

Example

def minimum_sum_of_consecutive_chars(string):
    min_sum = float('inf')
    length = len(string)

    for i in range(length):
        for j in range(i, length):
            substring = string[i:j+1]
            current_sum = sum(ord(c) for c in substring)
            min_sum = min(min_sum, current_sum)

    return min_sum

string = "abcde"
result = minimum_sum_of_consecutive_chars(string)
print(f"Minimum sum: {result}")
print(f"Character 'a' has ASCII value: {ord('a')}")
Minimum sum: 97
Character 'a' has ASCII value: 97

Using Dynamic Programming

Dynamic programming optimizes the solution by storing results of subproblems in a memoization table, avoiding redundant calculations.

Example

def minimum_sum_dp(string):
    length = len(string)
    memo = [[0] * length for _ in range(length)]

    # Base case: single characters
    for i in range(length):
        memo[i][i] = ord(string[i])

    # Fill the memoization table
    for l in range(2, length + 1):
        for i in range(length - l + 1):
            j = i + l - 1
            memo[i][j] = memo[i][j - 1] + ord(string[j])

    # Find minimum sum from all substrings
    return min(memo[i][j] for i in range(length) for j in range(i, length))

string = "abcde"
result = minimum_sum_dp(string)
print(f"Minimum sum using DP: {result}")
Minimum sum using DP: 97

Using Optimized Single Pass

The most efficient approach recognizes that the minimum sum will always be the ASCII value of the smallest character, since any substring containing multiple characters will have a larger sum.

Example

def minimum_sum_optimized(string):
    return min(ord(c) for c in string)

# Test with different strings
test_strings = ["abcde", "hello", "xyz", "programming"]

for s in test_strings:
    result = minimum_sum_optimized(s)
    min_char = min(s)
    print(f"String: '{s}' ? Min sum: {result} (character: '{min_char}')")
String: 'abcde' ? Min sum: 97 (character: 'a')
String: 'hello' ? Min sum: 101 (character: 'e')
String: 'xyz' ? Min sum: 120 (character: 'x')
String: 'programming' ? Min sum: 97 (character: 'a')

Comparison of Approaches

Method Time Complexity Space Complexity Best For
Brute Force O(n³) O(1) Learning purposes
Dynamic Programming O(n²) O(n²) Understanding DP concepts
Optimized O(n) O(1) Production code

Conclusion

The minimum sum of consecutive characters in a string is always the ASCII value of the smallest character. While brute force and dynamic programming approaches help understand the problem, the optimized O(n) solution using min(ord(c) for c in string) is most efficient for practical applications.

Updated on: 2026-03-27T11:17:29+05:30

209 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements