## Similar Problems

Similar Problems not available

# Substring With Largest Variance - Leetcode Solution

## Companies:

LeetCode: Substring With Largest Variance Leetcode Solution

Difficulty: Hard

Topics: dynamic-programming array

The Substring With Largest Variance problem on LeetCode is a medium-level question that asks you to find the substring of a given string that has the largest variance of its characters.

The problem statement is as follows:

Given a string s containing n characters, find the substring of s that has the largest variance of its characters. The variance of a substring is defined as the difference between the maximum and minimum ASCII value of its characters.

Example:

Input: "abcdefg" Output: 103 Explanation: The substring with the largest variance is "g" which has a variance of 103 (the ASCII value of 'g' is 103, and the ASCII value of 'a' is 97).

To solve this problem, we can use a sliding window technique. We will keep track of the minimum and maximum ASCII values of the characters in the current window and calculate the variance. We will move the window to the right one character at a time and update the minimum and maximum values accordingly.

Here is the step-by-step solution:

- Initialize variables

We start by initializing variables that we will use in the solution:

`max_var`

- the maximum variance that we will find`start`

- the starting index of the substring with the largest variance`min_val`

- the minimum ASCII value of the characters in the current window`max_val`

- the maximum ASCII value of the characters in the current window

We will set the initial values of `max_var`

and `start`

to 0.

- Start the sliding window

We will start the sliding window from the beginning of the string s. We will use a for loop to iterate through the string s.

For each iteration, we will do the following:

- Update the minimum and maximum values if necessary
- Calculate the variance of the current window
- Update
`max_var`

and`start`

if the current variance is larger than the previous maximum variance.

Here is the code:

```
max_var = 0
start = 0
min_val = ord(s[0])
max_val = ord(s[0])
for i in range(1, len(s)):
# update minimum and maximum values
if ord(s[i]) < min_val:
min_val = ord(s[i])
if ord(s[i]) > max_val:
max_val = ord(s[i])
# calculate variance
variance = max_val - min_val
# update max_var and start
if variance > max_var:
max_var = variance
start = i - (max_val == ord(s[i])) # the start index should be updated according to the maximum ASCII value
return max_var
```

- Return the answer

After the for loop finishes, we return the `max_var`

variable.

This solution has a time complexity of O(n), where n is the length of the input string s, since we iterate through the string once. The space complexity is O(1), since we use only a constant amount of extra space to store the variables.

## Substring With Largest Variance Solution Code

`1`