Open In App

Find the character made by adding all the characters of the given string

Given a string str consisting of lowercase English alphabets. The task is to add all the character values i.e. ‘a’ = 1, ‘b’ = 2, ‘c’ = 3, …, ‘z’ = 26 and output the character corresponding to the sum value. If it exceeds 26 then take sum % 26.

Examples: 



Input: str = “gfg” 
Output:
(g + f + g) = 7 + 6 + 7 = 20 and t = 20

Input: str = “geeks” 
Output:



Approach:

Below is the implementation of above approach:




#include <bits/stdc++.h>
using namespace std;
 
// Function to return the required character
char getChar(string str)
{
    int n = str.length();
    int max_sum = 0;
    char max_char = 'a';
    for (int i = 0; i < n; i++) {
        int sum = 0;
        for (int j = i; j < n; j++) {
            sum += (str[j] - 'a' + 1);
            if (sum > max_sum) {
                max_sum = sum;
                if (max_sum % 26 == 0)
                    max_char = 'z';
                else
                    max_char = (char)('a' + max_sum % 26 - 1);
            }
        }
    }
    return max_char;
}
 
// Driver code
int main()
{
    string str = "gfg";
 
    cout << getChar(str);
 
    return 0;
}




import java.util.*;
 
public class Main {
    public static void main(String[] args) {
        String str = "gfg";
        System.out.println(getChar(str));
    }
 
    public static char getChar(String str) {
        int n = str.length();
        int maxSum = 0;
        char maxChar = 'a';
 
        for (int i = 0; i < n; i++) {
            int sum = 0;
            for (int j = i; j < n; j++) {
                sum += (str.charAt(j) - 'a' + 1);
                if (sum > maxSum) {
                    maxSum = sum;
                    if (maxSum % 26 == 0)
                        maxChar = 'z';
                    else
                        maxChar = (char) ('a' + maxSum % 26 - 1);
                }
            }
        }
 
        return maxChar;
    }
}




# Function to return the required character
def get_char(s):
    n = len(s)
    max_sum = 0
    max_char = 'a'
    for i in range(n):
        sum_val = 0
        for j in range(i, n):
            sum_val += (ord(s[j]) - ord('a') + 1)
            if sum_val > max_sum:
                max_sum = sum_val
                if max_sum % 26 == 0:
                    max_char = 'z'
                else:
                    max_char = chr(ord('a') + max_sum % 26 - 1)
    return max_char
 
# Driver code
 
 
def main():
    s = "gfg"
    print(get_char(s))
 
 
if __name__ == "__main__":
    main()




using System;
 
class Program {
    // Function to return the required character
    static char GetChar(string str)
    {
        int n = str.Length;
        int maxSum = 0;
        char maxChar = 'a';
 
        for (int i = 0; i < n; i++) {
            int sum = 0;
            for (int j = i; j < n; j++) {
                sum += (str[j] - 'a' + 1);
 
                if (sum > maxSum) {
                    maxSum = sum;
                    if (maxSum % 26 == 0)
                        maxChar = 'z';
                    else
                        maxChar
                            = (char)('a' + maxSum % 26 - 1);
                }
            }
        }
 
        return maxChar;
    }
 
    // Driver code
    static void Main()
    {
        string str = "gfg";
        Console.WriteLine(GetChar(str));
    }
}
// sinudp5vi




function getChar(str) {
    let n = str.length;
    let maxSum = 0;
    let maxChar = 'a';
    for (let i = 0; i < n; i++) {
        let sum = 0;
        for (let j = i; j < n; j++) {
            sum += (str[j].charCodeAt(0) - 'a'.charCodeAt(0) + 1);
            if (sum > maxSum) {
                maxSum = sum;
                if (maxSum % 26 === 0)
                    maxChar = 'z';
                else
                    maxChar = String.fromCharCode('a'.charCodeAt(0) + (maxSum % 26) - 1);
            }
        }
    }
    return maxChar;
}
 
// Test the getChar function
let str = "gfg";
console.log(getChar(str));

Output
t





Time Complexity: O(n^2) where n is the length of the given string.
Space Complexity: O(1), as we are not using any extra space.

Approach: 

  1. Find the sum of all characters of the string and store it in a variable sum.
  2. If sum % 26 = 0 then print ‘z’.
  3. Else update sum = sum % 26 and print (sum + ‘a’ + 1).

Below is the implementation of the above approach: 




// C++ implementation of the approach
#include <bits/stdc++.h>
using namespace std;
 
// Function to return the required character
char getChar(string str)
{
 
    // To store the sum of the characters
    // of the given string
    int sum = 0;
 
    for (int i = 0; i < str.length(); i++) {
 
        // Add the current character to the sum
        sum += (str[i] - 'a' + 1);
    }
 
    // Return the required character
    if (sum % 26 == 0)
        return 'z';
    else {
        sum = sum % 26;
        return (char)('a' + sum - 1);
    }
}
 
// Driver code
int main()
{
    string str = "gfg";
 
    cout << getChar(str);
 
    return 0;
}




// Java implementation of the approach
class GFG
{
     
// Function to return the required character
static char getChar(String str)
{
 
    // To store the sum of the characters
    // of the given string
    int sum = 0;
 
    for (int i = 0; i < str.length(); i++)
    {
 
        // Add the current character to the sum
        sum += (str.charAt(i) - 'a' + 1);
    }
 
    // Return the required character
    if (sum % 26 == 0)
        return 'z';
    else
    {
        sum = sum % 26;
        return (char)('a' + sum - 1);
    }
}
 
// Driver code
public static void main (String[] args)
{
    String str = "gfg";
 
    System.out.println(getChar(str));
}
}
 
// This code is contributed by AnkitRai01




# Python3 implementation of the approach
 
# Function to return the required character
def getChar(strr):
 
    # To store the summ of the characters
    # of the given string
    summ = 0
 
    for i in range(len(strr)):
 
        # Add the current character to the summ
        summ += (ord(strr[i]) - ord('a') + 1)
 
    # Return the required character
    if (summ % 26 == 0):
        return ord('z')
    else:
        summ = summ % 26
        return chr(ord('a') + summ - 1)
 
# Driver code
strr = "gfg"
 
print(getChar(strr))
 
# This code is contributed by Mohit Kumar




// C# implementation of the approach
using System;
 
class GFG
{
     
// Function to return the required character
static char getChar(String str)
{
 
    // To store the sum of the characters
    // of the given string
    int sum = 0;
 
    for (int i = 0; i < str.Length; i++)
    {
 
        // Add the current character to the sum
        sum += (str[i] - 'a' + 1);
    }
 
    // Return the required character
    if (sum % 26 == 0)
        return 'z';
    else
    {
        sum = sum % 26;
        return (char)('a' + sum - 1);
    }
}
 
// Driver code
public static void Main (String[] args)
{
    String str = "gfg";
 
    Console.WriteLine(getChar(str));
}
}
     
// This code is contributed by PrinciRaj1992




<script>
    // Javascript implementation of the approach
     
    // Function to return the required character
    function getChar(str)
    {
 
        // To store the sum of the characters
        // of the given string
        let sum = 0;
 
        for (let i = 0; i < str.length; i++)
        {
 
            // Add the current character to the sum
            sum += (str[i].charCodeAt() - 'a'.charCodeAt() + 1);
        }
 
        // Return the required character
        if (sum % 26 == 0)
            return 'z';
        else {
            sum = sum % 26;
            return String.fromCharCode('a'.charCodeAt() + sum - 1);
        }
    }
     
    let str = "gfg";
    document.write(getChar(str));
     
    // This code is contributed by divyeshrabadiya07.
</script>

Output
t





Time Complexity: O(n), where n is the length of the given string.
Auxiliary Space: O(1), no extra space is required, so it is a constant.


Article Tags :