/* Def. includes
* Let #(x,s) = the number of occurrences of the charcter x in the string s.
* includes(a,b) holds if for every character x in b, #(x,b) <= #(x,a)
*
* A necessary precondition for includes is that both strings are sorted
* in ascending order.
*/
private boolean includes( String a, String b ) {
if ( b == null || b.length() == 0 )
return true;
else if ( a == null || a.length() == 0 )
return false;
//precondition: a.length() > 0 && b.length() > 0
int i = 0, j = 0;
while ( j < b.length() ) {
if (i >= a.length() || b.charAt(j) < a.charAt(i))
return false;
else if (b.charAt(j) == a.charAt(i)) {
i++; j++;
} else if (b.charAt(j) > a.charAt(i))
i++;
}
//postcondition: j == b.length()
return true;
}