15 November 2014

Quiz 48: next different alphabet

Problem:
Given a string, you need to convert to a different string such that consecutive characters should be different. Only operation allowed is to delete any alphabet of string. Find minimum number of deletion required

Input Format: 
number of test cases T
next T lines contains a string to be tested

Output Format: 
Minimum number of deletion required

Constraints: 
none

Sample Input
3
ababa
aaaabbbb
acbbca

Sample Output:
0
6
1

Explanations:
ababa already have proper condition.
aaaabbbb = ab, so 3 a and 3 b deleted, so ans is 3+3=6
acbbca = acbca, so only 1 b need to be deleted


Solution:

chomp($t=<STDIN>);
for($i=0;$i<$t;$i++)
{
chomp($s=<STDIN>);
@arr=split("",$s);
$len=@arr;
$len--;
$ans=0;
for($j=0;$j<$len;$j++)
{
if($arr[$j] eq $arr[$j+1])
{
$ans++;
}
}
push(@out,$ans);
}
foreach(@out)
{
print "$_\n";
}


Tips:
just increment counter if neighbours are same.

1 comment:

  1. chomp($n=);
    $s=();
    $cnt=0;
    for($i=0;$i<$n;$i=$i+1){
    chomp($s=);

    while($s=~/(.)(\1+)/g){
    $s= "$`$1$'";
    @cnt=split("",$2);
    $cnt=$cnt+@cnt;

    }
    push @arr,$s;
    push @a,$cnt;
    }

    foreach($i=0;$i<$n;$i=$i+1){
    print "result is $arr[$i] after delete $a[$i]\n";
    }

    ReplyDelete