Problem:
A Palindrome is a string with is exactly same as its reverse string like abcba.
Given a string containing only alphabets from a-z, we have to find minimum number of steps required to convert the string to palindrome.
allowed operations:
- any alphabet can be reduced by 1 lower alphabet in a step like d can be reduced to c
- alphabet a cannot be reduced further
Sample Input:
abcd
Sample Output:
4
Explanations:- step1-> abcd -> abcc
step2->abcc->abcb
step3->abcb->abca
step4->abca->abba-> so 4 steps are required
Solution:
chomp($a=<STDIN>); #take input
@arr=split("",$a); #convert string to array
$len = @arr; #get length of array
$tmp = 0; #this variable will store our count
for($i=0;$i<$len/2;$i++)
{
$a = ord($arr[$i]); #ord will get ascii value
$b = ord($arr[$len-$i-1]);
if($a>$b) #compare characters
{
$tmp = $tmp + $a - $b;
}
elsif($a<=$b)
{
$tmp = $tmp + $b - $a;
}
}
print "$tmp";
Tips:
A Palindrome is a string with is exactly same as its reverse string like abcba.
Given a string containing only alphabets from a-z, we have to find minimum number of steps required to convert the string to palindrome.
allowed operations:
- any alphabet can be reduced by 1 lower alphabet in a step like d can be reduced to c
- alphabet a cannot be reduced further
Sample Input:
abcd
Sample Output:
4
Explanations:- step1-> abcd -> abcc
step2->abcc->abcb
step3->abcb->abca
step4->abca->abba-> so 4 steps are required
Solution:
chomp($a=<STDIN>); #take input
@arr=split("",$a); #convert string to array
$len = @arr; #get length of array
$tmp = 0; #this variable will store our count
for($i=0;$i<$len/2;$i++)
{
$a = ord($arr[$i]); #ord will get ascii value
$b = ord($arr[$len-$i-1]);
if($a>$b) #compare characters
{
$tmp = $tmp + $a - $b;
}
elsif($a<=$b)
{
$tmp = $tmp + $b - $a;
}
}
print "$tmp";
Tips:
- compare 1st and last character, then 2nd and last-2 and so on.
No comments:
Post a Comment