- Trending Categories
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
Physics
Chemistry
Biology
Mathematics
English
Economics
Psychology
Social Studies
Fashion Studies
Legal Studies
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Encode given string by shifting each character forward with its alphabetical value
In this problem, we need to calculate the distance between the character and 'a', and by adding it to the character, we need to shift the character.
The solution approach is to find the difference between the ASCII values of both characters, and add it to the current character's ASCII value.
Problem statement - We have given an alpha string of length N containing only alphabetical characters. We need to encode the string according to the below conditions.
Take a distance between the current character and 'a'.
Shift the character in the clockwise direction by distance. Also, consider the circular shift.
Sample examples
Input
alpha = "abcd"
Output
'aceg'
Explanation
The difference between 'a' and 'a' is 0. So, we need to make 0 shifts.
The difference between 'a' and 'b' is 1. So, we get a 'c' when we shift it by 1.
The distance between 'a' and 'c' is 2. So, we get 'e' when we shift 'c' by 2.
The distance between 'a' and 'd' is 3. So, we get 'g' when we shift 'd' by 3.
Input
alpha = "tutorialspoint";
Output
'momciqawkecqam'
Explanation - We calculated the character difference for each character and shifted them by difference.
Input
alpha = "aaaa"
Output
"aaaa"
Explanation - The difference between 'a' and 'a' is 0. So the output string is the same as the input string.
Approach 1
This approach will take the difference between 'a' and character. If the sum of the current character value and difference is greater than or equal to 26, we will take modulo of sum to perform the circular shift.
Algorithm
Step 1 - Start traversing the given string using the for loop.
Step 2 - In the 'diff' integer variable, store the ch - 'a', which is the distance between the character and 'a'.
Step 3 - If 2*diff is greater than or equal to 26, take the modulo of 2 * diff with 26.
Step 4 - Add the 'diff' to the 'a' and store it into the 'ch' character.
Step 5 - If 2*diff is less than 26, add diff to the 'ch'.
Step 6 - Print the alpha string.
Example
#include <bits/stdc++.h> using namespace std; void updateString(string alpha) { for (auto &ch : alpha) { int diff = ch - 'a'; // If character + difference becomes greater than 'z' if (diff * 2 >= 26) { // Take modulus with 26 diff = (diff * 2) % 26; // Add a difference ch = 'a' + diff; } // If 'z' is not exceeded else { // Add difference to the current character ch = ch + diff; } } cout << "The encoded string is - " << alpha << endl; } int main() { string alpha = "abcd"; updateString(alpha); return 0; }
Output
The encoded string is - aceg
Time complexity - O(N), where N is the string length.
Space complexity - O(1) as we update the original string without using extra space.
We learned to encode the given string by performing the circular shift of the character by adding the distance to the character. Programmers can write the code to decrypt the encoded string for more practice of the problem given above.