HACKER RANK Algorithm Strings Challenges - The Love Letter Mystery Solution.'C++'
Algorithm Strings Challenges - The Love Letter Mystery Solution
Problem Statement
James found a love letter his friend Harry has written for his girlfriend. James is a prankster, so he decides to meddle with the letter. He changes all the words in the letter into palindromes.
To do this, he follows two rules:
- He can reduce the value of a letter, e.g. he can change d to c, but he cannot change c to d.
- In order to form a palindrome, if he has to repeatedly reduce the value of a letter, he can do it until the letter becomes a. Once a letter has been changed to a, it can no longer be changed.
Each reduction in the value of any letter is counted as a single operation. Find the minimum number of operations required to convert a given string into a palindrome.
Input Format
The first line contains an integer T , i.e., the number of test cases.
The next T lines will contain a string each. The strings do not contain any spaces.
Constraints
1≤T≤10
1≤ length of string ≤104
All characters are lower case English letters.
Output Format
A single line containing the number of minimum operations corresponding to each test case.
Sample Input
4
abc
abcba
abcd
cba
Sample Output
2
0
4
2
Explanation
- For the first test case, abc -> abb -> aba.
- For the second test case, abcba is already a palindromic string.
- For the third test case, abcd -> abcc -> abcb -> abca = abca -> abba.
- For the fourth test case, cba -> bba -> aba.
Problem Statement
James found a love letter his friend Harry has written for his girlfriend. James is a prankster, so he decides to meddle with the letter. He changes all the words in the letter into palindromes.
To do this, he follows two rules:
- He can reduce the value of a letter, e.g. he can change d to c, but he cannot change c to d.
- In order to form a palindrome, if he has to repeatedly reduce the value of a letter, he can do it until the letter becomes a. Once a letter has been changed to a, it can no longer be changed.
Each reduction in the value of any letter is counted as a single operation. Find the minimum number of operations required to convert a given string into a palindrome.
Input Format
The first line contains an integer T , i.e., the number of test cases.
The nextT lines will contain a string each. The strings do not contain any spaces.
The next
Constraints
1≤T≤10
1≤ length of string ≤104
All characters are lower case English letters.
All characters are lower case English letters.
Output Format
A single line containing the number of minimum operations corresponding to each test case.
Sample Input
4
abc
abcba
abcd
cba
Sample Output
2
0
4
2
Explanation
- For the first test case, abc -> abb -> aba.
- For the second test case, abcba is already a palindromic string.
- For the third test case, abcd -> abcc -> abcb -> abca = abca -> abba.
- For the fourth test case, cba -> bba -> aba.
Solution:
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int main() {
/* Enter your code here. Read input from STDIN. Print output to STDOUT */
int t;
cin>>t;
while(t--)
{
char inp[10000] ;
cin>>inp;
int first=0,last=strlen(inp)-1,ans = 0,count;
do{
int ff = inp[first];
int ll = inp[last];
if(ff!=ll)
{
int count = abs (ff-ll);
ans = ans +count;
}
first++;
last--;
}while(first<last);
cout<<ans<<endl;
}
return 0;
}
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int main() {
/* Enter your code here. Read input from STDIN. Print output to STDOUT */
int t;
cin>>t;
while(t--)
{
char inp[10000] ;
cin>>inp;
int first=0,last=strlen(inp)-1,ans = 0,count;
do{
int ff = inp[first];
int ll = inp[last];
if(ff!=ll)
{
int count = abs (ff-ll);
ans = ans +count;
}
first++;
last--;
}while(first<last);
cout<<ans<<endl;
}
return 0;
}
Thanks for Visiting, Hope this helps you....
Copyright © 2015 HackerRank.
All Rights Reserved
All Rights Reserved
Comments
Post a Comment