Find the Substring with maximum product

Given string str containing only lowercase English alphabets of size N, the task is to find the substring having the maximum product.
Each English alphabet has a value such that val(‘a’) = 0, val(‘b’) = 1, val(‘c’) = 2, ……, val(‘z’) = 25.
Examples:
Input: str = “sdtfakdhdahdzz”
Output: hdzz
Here, the maximum product is for the substring “hdzz”.
product = 7 * 3 * 25 * 25 = 13125
Input: str = “zambiatek”
Output: zambiatek
Approach:
- First, traverse through the given string while maintaining a maximum product value.
- Product will always keep increasing or will remain constant unless we encounter an ‘a’. Hence, start a new substring after each ‘a’ occurrence.
- Also, along with the maximum product value, we will also maintain the substring to which the maximum product corresponds.
- Once the entire string has been traversed, print the substring corresponding to the maximum product.
Below is the implementation of the above approach:
C++
// C++ program to find the maximum product substring#include <bits/stdc++.h>using namespace std;// Function to return the value of a characterint value(char x){ return (int)(x - 'a');}// Function to find the maximum product substringstring maximumProduct(string str, int n){ // To store substrings string answer = "", curr = ""; long long maxProduct = 0, product = 1; for (int i = 0; i < n; i++) { product *= 1LL * value(str[i]); curr += str[i]; // Check if current product is maximum // possible or not if (product >= maxProduct) { maxProduct = product; answer = curr; } // If product is 0 if (product == 0) { product = 1; curr = ""; } } // Return the substring with maximum product return answer;}// Driver codeint main(){ string str = "sdtfakdhdahdzz"; int n = str.size(); // Function call cout << maximumProduct(str, n) << endl; return 0;} |
Java
// Java program to find the maximum product subStringclass GFG{ // Function to return the value of a characterstatic int value(char x){ return (int)(x - 'a');} // Function to find the maximum product subStringstatic String maximumProduct(String str, int n){ // To store subStrings String answer = "", curr = ""; long maxProduct = 0, product = 1; for (int i = 0; i < n; i++) { product *= 1L * value(str.charAt(i)); curr += str.charAt(i); // Check if current product is maximum // possible or not if (product >= maxProduct) { maxProduct = product; answer = curr; } // If product is 0 if (product == 0) { product = 1; curr = ""; } } // Return the subString with maximum product return answer;} // Driver codepublic static void main(String[] args){ String str = "sdtfakdhdahdzz"; int n = str.length(); // Function call System.out.print(maximumProduct(str, n) +"\n"); }}// This code is contributed by 29AjayKumar |
Python3
# Python3 program to find the maximum product sub# Function to return the value of a characterdef value(x): return (ord(x) - ord('a'))# Function to find the maximum product subdef maximumProduct(strr, n): # To store subs answer = "" curr = "" maxProduct = 0 product = 1 for i in range(n): product *=value(strr[i]) curr += strr[i] # Check if current product is maximum # possible or not if (product >= maxProduct): maxProduct = product answer = curr # If product is 0 if (product == 0): product = 1 curr = "" # Return the sub with maximum product return answer# Driver codeif __name__ == '__main__': strr = "sdtfakdhdahdzz" n = len(strr) # Function call print(maximumProduct(strr, n))# This code is contributed by mohit kumar 29 |
C#
// C# program to find the maximum product subStringusing System;public class GFG{// Function to return the value of a characterstatic int value(char x){ return (int)(x - 'a');}// Function to find the maximum product subStringstatic String maximumProduct(String str, int n){ // To store subStrings String answer = "", curr = ""; long maxProduct = 0, product = 1; for (int i = 0; i < n; i++) { product *= 1L * value(str[i]); curr += str[i]; // Check if current product is maximum // possible or not if (product >= maxProduct) { maxProduct = product; answer = curr; } // If product is 0 if (product == 0) { product = 1; curr = ""; } } // Return the subString with maximum product return answer;}// Driver codepublic static void Main(String[] args){ String str = "sdtfakdhdahdzz"; int n = str.Length; // Function call Console.Write(maximumProduct(str, n) +"\n");}}// This code is contributed by PrinciRaj1992 |
Javascript
<script>// Javascript program to find the// maximum product subString// Function to return the value of a characterfunction value(x){ return (x.charCodeAt() - 'a'.charCodeAt());} // Function to find the maximum product subStringfunction maximumProduct(str, n){ // To store subStrings let answer = "", curr = ""; let maxProduct = 0, product = 1; for (let i = 0; i < n; i++) { product *= (1 * value(str[i])); curr += str[i]; // Check if current product is maximum // possible or not if (product >= maxProduct) { maxProduct = product; answer = curr; } // If product is 0 if (product == 0) { product = 1; curr = ""; } } // Return the subString with maximum product return answer;} // Driver Code let str = "sdtfakdhdahdzz"; let n = str.length; // Function call document.write(maximumProduct(str, n) +"<br/>"); </script> |
Output:
hdzz
Time Complexity: O(N)
Auxiliary Space: O(1)
Feeling lost in the world of random DSA topics, wasting time without progress? It’s time for a change! Join our DSA course, where we’ll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 zambiatek!
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 zambiatek!



