Convert all lowercase characters to uppercase whose ASCII value is co-prime with k
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 = “BeginnerforBeginner”, k = 4
Output: BeginnerfOrBeginner
‘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 its 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++
// 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 = "BeginnerforBeginner" ; int k = 4; convert_str(s, k); return 0; } |
Java
// 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 = "BeginnerforBeginner" ; int k = 4 ; convert_str(s, k); } } // This code is contributed by 29AjayKumar |
Python3
# 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 = "BeginnerforBeginner" k = 4 convert_str(s, k) # This code is contributed by Rituraj Jain |
C#
// 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 = "BeginnerforBeginner" ; int k = 4; convert_str(s, k); } } // This code is contributed by PrinciRaj1992 |
Javascript
<script> // JavaScript implementation of the approach // function to modify the string function convert_str(s, k) { // length of the string var l = s.length; var newStr = "" ; for ( var i = 0; i < l; i++) { var ascii = s[i].charCodeAt(0); // check if the character is // lowercase and co-prime with k if ( ascii >= "a" .charCodeAt(0) && ascii <= "z" .charCodeAt(0) && __gcd(ascii, k) === 1 ) { // change the character // to upper-case var c = String.fromCharCode(s[i].charCodeAt(0) - 32); newStr += c; } else { newStr += s[i]; } } document.write(newStr); } 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 var s = "BeginnerforBeginner" ; var k = 4; convert_str(s, k); </script> |
PHP
<?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 = "BeginnerforBeginner" ; $k = 4; convert_str( $s , $k ); // This code is contributed by ita_c ?> |
Output
BeginnerfOrBeginner
Complexity Analysis:
- Time Complexity: O(L), where L is the length of string.
- Auxiliary Space: O(1)