Open In App

Replace every character of string by character whose ASCII value is K times more than it

Given string str consisting of lowercase letters only and an integer k, the task is to replace every character of the given string with a character whose ASCII value is k times more than it. If the ASCII value exceeds ‘z’, then start checking from ‘a in a cyclic manner.

Examples:  

Input: str = “abc”, k = 2 
Output: cde 
Explanation: 
a is moved by 2 times which results in character c 
b is moved by 2 times which results in character d 
c is moved by 2 times which results in character e

Input: str = “abc”, k = 28 
Output: cde 
Explanation: 
a is moved 25 times, z is reached. Then 26th character will be a, 27-th b and 28-th c. 
b is moved 24 times, z is reached. 28-th is d. 
b is moved 23 times, z is reached. 28-th is e. 

Approach: Iterate for every character in the string and perform the below steps for each character:  

Repeat the above steps for every character of the given string.

Below is the implementation of the above approach: 




// CPP program to move every character
// K times ahead in a given string
#include <bits/stdc++.h>
using namespace std;
 
// Function to move string character
void encode(string s,int k){
 
    // changed string
    string newS;
 
    // iterate for every characters
    for(int i=0; i<s.length(); ++i)
    {
        // ASCII value
        int val = int(s[i]);
 
        // store the duplicate
        int dup = k;
 
        // if k-th ahead character exceed 'z'
        if(val + k > 122){
            k -= (122-val);
            k = k % 26;
            newS += char(96 + k);
        }
        else
            newS += char(val + k);
 
        k = dup;
    }
 
    // print the new string
    cout<<newS;
}
 
// driver code
int main(){
    string str = "abc";
    int k = 28;
 
    // function call
    encode(str, k);
 
    return 0;
}
 
// This code is contributed by Sanjit_Prasad




// Java program to move every character
// K times ahead in a given string
 
class GFG {
 
// Function to move string character
    static void encode(String s, int k) {
 
        // changed string
        String newS = "";
 
        // iterate for every characters
        for (int i = 0; i < s.length(); ++i) {
            // ASCII value
            int val = s.charAt(i);
            // store the duplicate
            int dup = k;
 
            // if k-th ahead character exceed 'z'
            if (val + k > 122) {
                k -= (122 - val);
                k = k % 26;
                 
                newS += (char)(96 + k);
            } else {
                newS += (char)(val + k);
            }
 
            k = dup;
        }
 
        // print the new string
        System.out.println(newS);
    }
 
// Driver Code
    public static void main(String[] args) {
        String str = "abc";
        int k = 28;
 
        // function call
        encode(str, k);
    }
}
 
// This code is contributed by Rajput-JI




# Python program to move every character
# K times ahead in a given string
 
# Function to move string character
def encode(s, k):
     
    # changed string
    newS = ""
     
    # iterate for every characters
    for i in range(len(s)):
         
        # ASCII value
        val = ord(s[i])
         
        # store the duplicate
        dup = k
         
        # if k-th ahead character exceed 'z'
        if val + k>122:
            k -= (122-val)
            k = k % 26
            newS += chr(96 + k)
             
        else:
            newS += chr(val + k)
         
        k = dup
     
    # print the new string
    print (newS)
             
# driver code    
str = "abc"
k = 28
 
encode(str, k)




// C# program to move every character
// K times ahead in a given string
using System;
public class GFG {
 
// Function to move string character
    static void encode(String s, int k) {
 
        // changed string
        String newS = "";
 
        // iterate for every characters
        for (int i = 0; i < s.Length; ++i) {
            // ASCII value
            int val = s[i];
            // store the duplicate
            int dup = k;
 
            // if k-th ahead character exceed 'z'
            if (val + k > 122) {
                k -= (122 - val);
                k = k % 26;
                 
                newS += (char)(96 + k);
            } else {
                newS += (char)(96 + k);
            }
 
            k = dup;
        }
 
        // print the new string
        Console.Write(newS);
    }
 
// Driver Code
    public static void Main() {
        String str = "abc";
        int k = 28;
 
        // function call
        encode(str, k);
    }
}
 
// This code is contributed by Rajput-JI




<script>
// Javascript program to move every character
// K times ahead in a given string
 
     
// Function to move string character
 
    function encode(s,k)
    {
        // changed string
        let newS = "";
   
        // iterate for every characters
        for (let i = 0; i < s.length; ++i) {
            // ASCII value
            let val = s[i].charCodeAt(0);
            // store the duplicate
            let dup = k;
   
            // if k-th ahead character exceed 'z'
            if (val + k > 122) {
                k -= (122 - val);
                k = k % 26;
                   
                newS += String.fromCharCode(96 + k);
            } else {
                newS += String.fromCharCode(val + k);
            }
   
            k = dup;
        }
   
        // print the new string
        document.write(newS);
    }
     
    // Driver Code
    let str = "abc";
    let k = 28;
     
    // function call
    encode(str, k);
     
 
 
// This code is contributed by rag2127
</script>




<?php
// PHP program to move every character
// K times ahead in a given string
 
// Function to move string character
function encode($s, $k)
{
 
    // changed string
    $newS = "";
 
    // iterate for every characters
    for($i = 0; $i < strlen($s); ++$i)
    {
        // ASCII value
        $val = ord($s[$i]);
 
        // store the duplicate
        $dup = $k;
 
        // if k-th ahead character exceed 'z'
        if($val + $k > 122)
        {
            $k -= (122 - $val);
            $k = $k % 26;
            $newS = $newS.chr(96 + $k);
        }
        else
            $newS = $newS.chr($val + $k);
 
        $k = $dup;
    }
 
    // print the new string
    echo $newS;
}
 
// Driver code
 
$str = "abc";
$k = 28;
 
// function call
encode($str, $k);
 
// This code is contributed by ita_c
?>

Output
cde

Complexity Analysis:

Approach: Using modular arithmetic

Steps:

Below is the implementation of the above approach: 




#include <iostream>
#include <string>
using namespace std;
 
// Function to replace characters in a string
string replaceCharacters(string str, int k) {
    // Iterate over each character in the string
    for (int i = 0; i < str.length(); ++i) {
        int asciiVal = (str[i] - 'a' + k) % 26 + 'a'; // Calculate the new ASCII value
        str[i] = static_cast<char>(asciiVal); // Update the character
    }
 
    return str; // Return the modified string
}
// Driver Code
int main() {
    string inputStr = "abc";
    int kValue = 2;
    string outputStr = replaceCharacters(inputStr, kValue);
    cout << outputStr << endl;
    return 0;
}




public class GFG {
 
    public static String replaceCharacters(String str, int k) {
        // Convert the string to a character array
        char[] charArray = str.toCharArray();
 
        // Iterate over each character in the array
        for (int i = 0; i < charArray.length; ++i) {
            int asciiVal = (charArray[i] - 'a' + k) % 26 + 'a';
            charArray[i] = (char) asciiVal;
        }
 
        // Convert the character array back to a string
        return new String(charArray);
    }
 
    public static void main(String[] args) {
        String inputStr = "abc";
        int kValue = 2;
        String outputStr = replaceCharacters(inputStr, kValue);
        System.out.println(outputStr);
    }
}
 
// This code is contributed by Samim Hossain Mondal.




# Python program to move every character
# K times ahead in a given string
 
 
def replace_characters(string, k):
   
    # Convert the string to a list of characters
    char_list = list(string)
     
    # Iterate over each character in the list
    for i in range(len(char_list)):
        ascii_val = (ord(char_list[i]) - ord('a') + k) % 26 + ord('a')
        char_list[i] = chr(ascii_val)
         
    # Convert the list of characters back to a string
    return "".join(char_list)
 
 
# Driver Code
input_str = "abc"
k_value = 2
output_str = replace_characters(input_str, k_value)
print(output_str)




using System;
 
class Program {
    // Function to replace characters in a string
    static string ReplaceCharacters(string str, int k)
    {
        // Create a character array to store the modified
        // characters
        char[] modifiedChars = new char[str.Length];
 
        // Iterate over each character in the string
        for (int i = 0; i < str.Length; ++i) {
            int asciiVal
                = (str[i] - 'a' + k) % 26
                  + 'a'; // Calculate the new ASCII value
            modifiedChars[i]
                = (char)asciiVal; // Update the character in
                                  // the array
        }
 
        // Create a new string from the modified character
        // array
        string modifiedStr = new string(modifiedChars);
 
        return modifiedStr; // Return the modified string
    }
 
    // Driver Code
    static void Main()
    {
        string inputStr = "abc";
        int kValue = 2;
        string outputStr
            = ReplaceCharacters(inputStr, kValue);
        Console.WriteLine(outputStr);
    }
}




// Function to replace characters in a string
function replaceCharacters(str, k) {
    // Iterate over each character in the string
    for (let i = 0; i < str.length; i++) {
        let charCode = str.charCodeAt(i);
        let newCharCode = ((charCode - 'a'.charCodeAt(0) + k) % 26) + 'a'.charCodeAt(0); // Calculate the new character code
        str = str.substring(0, i) + String.fromCharCode(newCharCode) + str.substring(i + 1); // Update the character
    }
 
    return str; // Return the modified string
}
 
// Driver Code
let inputStr = "abc";
let kValue = 2;
let outputStr = replaceCharacters(inputStr, kValue);
console.log(outputStr);
 
// This code is contributed by shivamgupta0987654321

Output
cde

Time Complexity: O(n), where n is the length of the input string.

Auxiliary Space: O(n)


Article Tags :