## HackerRank: Alternating Characters

### Problem

Shashank likes strings in which consecutive characters are different. For example, he likes ABABA, while he doesn’t like ABAA. Given a string containing characters A and B only, he wants to change it into a string he likes. To do this, he is allowed to delete the characters in the string.

Input Format

The first line contains an integer T, i.e. the number of test cases.
The next T lines contain a string each.

Output Format

For each test case, print the minimum number of deletions required.

Constraints

1T10
1≤ length of string 10^5

Sample Input

5
AAAA
BBBBB
ABABABAB
BABABA
AAABBB


Sample Output

3
4
0
0
4


Explanation

AAAA A, 3 deletions
BBBBB B, 4 deletions
ABABABAB ABABABAB, 0 deletions
BABABA BABABA, 0 deletions
AAABBB AB, 4 deletions because to convert it to AB we need to delete 2 A’s and 2 B’s

## Example of Decorator Pattern – LowerCaseInputStream

Create a LowerCaseInputStream class as follows

public class LowerCaseInputStream extends FilterInputStream
{

public LowerCaseInputStream(InputStream in) {
super(in);
}

@Override
{
if(c==-1)
return c;
else
return Character.toLowerCase(c);
}
@Override
public int read(byte b[], int offset, int len) throws IOException
{
int result = super.read(b, offset, len);
for (int i = offset; i < offset+result; i++)
{
b[i] = (byte)Character.toLowerCase((char)b[i]);
}
return result;
}

}

Use LowerCaseInputStream as follows

public static void main(String[] args) throws FileNotFoundException {
FileInputStream fis = new FileInputStream("D:\Yogesh.txt");
BufferedInputStream bufin = new BufferedInputStream(fis);
InputStream in = new LowerCaseInputStream(bufin);
int c;
try
{
}