codeforces#P1673B. A Perfectly Balanced String?
A Perfectly Balanced String?
Description
Let's call a string $s$ perfectly balanced if for all possible triplets $(t,u,v)$ such that $t$ is a non-empty substring of $s$ and $u$ and $v$ are characters present in $s$, the difference between the frequencies of $u$ and $v$ in $t$ is not more than $1$.
For example, the strings "aba" and "abc" are perfectly balanced but "abb" is not because for the triplet ("bb",'a','b'), the condition is not satisfied.
You are given a string $s$ consisting of lowercase English letters only. Your task is to determine whether $s$ is perfectly balanced or not.
A string $b$ is called a substring of another string $a$ if $b$ can be obtained by deleting some characters (possibly $0$) from the start and some characters (possibly $0$) from the end of $a$.
The first line of input contains a single integer $t$ ($1\leq t\leq 2\cdot 10^4$) denoting the number of testcases.
Each of the next $t$ lines contain a single string $s$ ($1\leq |s|\leq 2\cdot 10^5$), consisting of lowercase English letters.
It is guaranteed that the sum of $|s|$ over all testcases does not exceed $2\cdot 10^5$.
For each test case, print "YES" if $s$ is a perfectly balanced string, and "NO" otherwise.
You may print each letter in any case (for example, "YES", "Yes", "yes", "yEs" will all be recognized as positive answer).
Input
The first line of input contains a single integer $t$ ($1\leq t\leq 2\cdot 10^4$) denoting the number of testcases.
Each of the next $t$ lines contain a single string $s$ ($1\leq |s|\leq 2\cdot 10^5$), consisting of lowercase English letters.
It is guaranteed that the sum of $|s|$ over all testcases does not exceed $2\cdot 10^5$.
Output
For each test case, print "YES" if $s$ is a perfectly balanced string, and "NO" otherwise.
You may print each letter in any case (for example, "YES", "Yes", "yes", "yEs" will all be recognized as positive answer).
Samples
5
aba
abb
abc
aaaaa
abcba
YES
NO
YES
YES
NO
Note
Let $f_t(c)$ represent the frequency of character $c$ in string $t$.
For the first testcase we have
$t$ | $f_t(a)$ | $f_t(b)$ |
$a$ | $1$ | $0$ |
$ab$ | $1$ | $1$ |
$aba$ | $2$ | $1$ |
$b$ | $0$ | $1$ |
$ba$ | $1$ | $1$ |
For the second testcase we have
$t$ | $f_t(a)$ | $f_t(b)$ |
$a$ | $1$ | $0$ |
$ab$ | $1$ | $1$ |
$abb$ | $1$ | $2$ |
$b$ | $0$ | $1$ |
$bb$ | $0$ | $2$ |
For the third testcase we have
$t$ | $f_t(a)$ | $f_t(b)$ | $f_t(c)$ |
$a$ | $1$ | $0$ | $0$ |
$ab$ | $1$ | $1$ | $0$ |
$abc$ | $1$ | $1$ | $1$ |
$b$ | $0$ | $1$ | $0$ |
$bc$ | $0$ | $1$ | $1$ |
$c$ | $0$ | $0$ | $1$ |
It can be seen that for any substring $t$ of $s$ and any two characters $u,v\in\{a,b,c\}$, the difference between $f_t(u)$ and $f_t(v)$ is not more than $1$. Hence the string $s$ is perfectly balanced.