Related Articles

Related Articles

Convert all lowercase characters to uppercase whose ASCII value is co-prime with k
  • Difficulty Level : Medium
  • Last Updated : 31 Jan, 2019

Given an integer ‘k’ and a string ‘str’ consisting of characters from English alphabets. The task is to convert all lower case character to uppercase whose ASCII value is co-prime with k.

Examples:

Input: str = “geeksforgeeks”, k = 4
Output: GEEKSfOrGEEKS
‘f’ and ‘r’ are the only characters whose ASCII values aren’t co-prime with 4.

Input: str = “Ac”, k = 2
Output: AC
The only lower case character is ‘c’ and ASCII value of ‘c’ is 99 which is co-prime with 2.

Approach:



  • Iterate over all characters in the given string to check whether the current character is lowercase and if it’s ASCII value is co-prime with ‘k’
  • To check for co-prime, check that if the gcd of the value with k is ‘1’ or not.
  • If the above condition is satisfied then convert that lowercase alphabet to uppercase alphabet.

Below is the implementation of the above approach:

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ implementation of the approach
#include <bits/stdc++.h>
using namespace std;
  
// function to modify the string
void convert_str(string s, int k)
{
    // length of the string
    int l = s.length();
  
    for (int i = 0; i < l; i++) {
        int ascii = (int)s[i];
  
        // check if the character is
        // lowercase and co-prime with k
        if (ascii >= 'a' && ascii <= 'z'
            && __gcd(ascii, k) == 1) {
  
            // change the character
            // to upper-case
            char c = s[i] - 32;
            s[i] = c;
        }
    }
  
    cout << s << "\n";
}
  
// Driver code
int main()
{
    string s = "geeksforgeeks";
    int k = 4;
  
    convert_str(s, k);
  
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java implementation of the approach
class GFG 
{
  
// function to modify the string
    static void convert_str(String str, int k)
    {
        // length of the string
        char[] s = str.toCharArray();
        int l = s.length;
  
        for (int i = 0; i < l; i++) 
        {
            int ascii = (int) s[i];
  
            // check if the character is
            // lowercase and co-prime with k
            if (ascii >= 'a' && ascii <= 'z' 
                    && __gcd(ascii, k) == 1)
            {
  
                // change the character
                // to upper-case
                char c = (char) (s[i] - 32);
                s[i] = c;
            }
        }
        System.out.println(String.valueOf(s));
    }
  
    static int __gcd(int a, int b) 
    {
        // Everything divides 0 
        if (a == 0)  
        {
            return b;
        }
        if (b == 0
        {
            return a;
        }
  
        // base case 
        if (a == b) 
        {
            return a;
        }
  
        // a is greater 
        if (a > b) 
        {
            return __gcd(a - b, b);
        }
        return __gcd(a, b - a);
    }
  
    // Driver code
    public static void main(String[] args) 
    {
        String s = "geeksforgeeks";
        int k = 4;
        convert_str(s, k);
    }
  
// This code is contributed by 29AjayKumar

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 implementation of the approach 
from math import gcd
  
# function to modify the string 
def convert_str(s, k): 
      
    modified_string = ""
    for i in range(0, len(s)): 
        ascii = ord(s[i]) 
  
        # check if the character is 
        # lowercase and co-prime with k 
        if (ascii >= ord('a') and
            ascii <= ord('z') and
            gcd(ascii, k) == 1): 
  
            # change the character to upper-case 
            modified_string += chr(ascii - 32)
              
        else:
            modified_string += s[i]
  
    print(modified_string) 
  
# Driver code 
if __name__ == "__main__":
  
    s = "geeksforgeeks"
    k = 4
  
    convert_str(s, k) 
  
# This code is contributed by Rituraj Jain

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# implementation of the approach
using System;
  
class GFG 
{
  
    // function to modify the string
    static void convert_str(String str, int k)
    {
      
        // length of the string
        char[] s = str.ToCharArray();
        int l = s.Length;
  
        for (int i = 0; i < l; i++) 
        {
            int ascii = (int) s[i];
  
            // check if the character is
            // lowercase and co-prime with k
            if (ascii >= 'a' && ascii <= 'z'
                    && __gcd(ascii, k) == 1)
            {
  
                // change the character
                // to upper-case
                char c = (char) (s[i] - 32);
                s[i] = c;
            }
        }
        Console.WriteLine(String.Join("", s));
    }
  
    static int __gcd(int a, int b) 
    {
        // Everything divides 0 
        if (a == 0) 
        {
            return b;
        }
        if (b == 0) 
        {
            return a;
        }
  
        // base case 
        if (a == b) 
        {
            return a;
        }
  
        // a is greater 
        if (a > b) 
        {
            return __gcd(a - b, b);
        }
        return __gcd(a, b - a);
    }
  
    // Driver code
    public static void Main() 
    {
        String s = "geeksforgeeks";
        int k = 4;
        convert_str(s, k);
    }
}
  
// This code is contributed by PrinciRaj1992

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// PHP implementation of the approach
  
// function to modify the string
function convert_str($str, $k)
{
    // length of the string
    $l = strlen($str);
    $modified_string = "";
  
    for ($i = 0; $i < $l; $i++) 
    {
        $ascii = ord($str[$i]);
  
        // check if the character is
        // lowercase and co-prime with k
        if ($ascii >= ord('a') && 
            $ascii <= ord('z') && 
            __gcd($ascii, $k) == 1)
        {
  
            // change the character to upper-case
            $modified_string = $modified_string.chr($ascii - 32);
        }
        else
        {
            $modified_string = $modified_string.$str[$i];
        }
    }
    echo ($modified_string);
}
  
function __gcd($a, $b
{
    // Everything divides 0 
    if ($a == 0) 
    {
        return $b;
    }
    if ($b == 0) 
    {
        return $a;
    }
  
    // base case 
    if ($a == $b
    {
        return $a;
    }
  
    // a is greater 
    if ($a > $b
    {
        return __gcd($a - $b, $b);
    }
    return __gcd($a, $b - $a);
}
  
// Driver code
$s = "geeksforgeeks";
$k = 4;
convert_str($s, $k);
  
// This code is contributed by ita_c 
?>

chevron_right


Output:

GEEKSfOrGEEKS

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.




My Personal Notes arrow_drop_up
Recommended Articles
Page :