private void scan(final char[] input,final int start,final int end){
  this.positions=new HashMap<Character,ArrayList<Integer>>();
  ArrayList<Integer> list;
  char c;
  for (int i=start; i < end; i++) {
    c=input[i];
    list=positions.get(c);
    if (list == null) {
      list=new ArrayList<Integer>();
      positions.put(c,list);
    }
    list.add(i);
  }
}

private void scan ( final char [ ] input , final int start , final int end ) { this . positions = new HashMap < Character , ArrayList < Integer > > ( ) ; ArrayList < Integer > list ; char c ; for ( int i = start ; i < end ; i ++ ) { c = input [ i ] ; list = positions . get ( c ) ; if ( list == null ) { list = new ArrayList < Integer > ( ) ; positions . put ( c , list ) ; } list . add ( i ) ; } }
scans the input and creates the character - > position mapping .
