/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
// your code goes here
int k = 2;
Ans(s, k);
}
public static void Ans
(String s,
int k
) { TreeMap
<Character, Integer
> map
= new TreeMap
<>();
int left = 0;
int maxLen = 0;
int start = 0;
for (int right = 0; right < s.length(); right++) {
char ch = s.charAt(right);
map.put(ch, map.getOrDefault(ch, 0) + 1);
while (map.lastKey() - map.firstKey() > k) {
char remove = s.charAt(left);
map.put(remove, map.get(remove) - 1);
if (map.get(remove) == 0) {
map.remove(remove);
}
left++;
}
if (right - left + 1 > maxLen) {
maxLen = right - left + 1;
start = left;
}
}
System.
out.
println("Substring: " + s.substring(start, start + maxLen));
System.
out.
println("Length: " + maxLen
); }
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCS8vIHlvdXIgY29kZSBnb2VzIGhlcmUKCQlTdHJpbmcgcyA9ICJhYmNkZSI7CiAgICAgICAgaW50IGsgPSAyOwoKICAgICAgICBBbnMocywgayk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyB2b2lkIEFucyhTdHJpbmcgcywgaW50IGspIHsKICAgICAgICBUcmVlTWFwPENoYXJhY3RlciwgSW50ZWdlcj4gbWFwID0gbmV3IFRyZWVNYXA8PigpOwoKICAgICAgICBpbnQgbGVmdCA9IDA7CiAgICAgICAgaW50IG1heExlbiA9IDA7CiAgICAgICAgaW50IHN0YXJ0ID0gMDsKCiAgICAgICAgZm9yIChpbnQgcmlnaHQgPSAwOyByaWdodCA8IHMubGVuZ3RoKCk7IHJpZ2h0KyspIHsKICAgICAgICAgICAgY2hhciBjaCA9IHMuY2hhckF0KHJpZ2h0KTsKCiAgICAgICAgICAgIG1hcC5wdXQoY2gsIG1hcC5nZXRPckRlZmF1bHQoY2gsIDApICsgMSk7CgogICAgICAgICAgICB3aGlsZSAobWFwLmxhc3RLZXkoKSAtIG1hcC5maXJzdEtleSgpID4gaykgewogICAgICAgICAgICAgICAgY2hhciByZW1vdmUgPSBzLmNoYXJBdChsZWZ0KTsKCiAgICAgICAgICAgICAgICBtYXAucHV0KHJlbW92ZSwgbWFwLmdldChyZW1vdmUpIC0gMSk7CgogICAgICAgICAgICAgICAgaWYgKG1hcC5nZXQocmVtb3ZlKSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgbWFwLnJlbW92ZShyZW1vdmUpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGxlZnQrKzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKHJpZ2h0IC0gbGVmdCArIDEgPiBtYXhMZW4pIHsKICAgICAgICAgICAgICAgIG1heExlbiA9IHJpZ2h0IC0gbGVmdCArIDE7CiAgICAgICAgICAgICAgICBzdGFydCA9IGxlZnQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiU3Vic3RyaW5nOiAiICsKICAgICAgICAgICAgcy5zdWJzdHJpbmcoc3RhcnQsIHN0YXJ0ICsgbWF4TGVuKSk7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJMZW5ndGg6ICIgKyBtYXhMZW4pOwoJfQp9