Remove Letter To Equalize Frequency
EasyHash TableStringCounting
Solution
class CharCounter {
private readonly map: Map<string, number>;
constructor(str: string) {
this.map = new Map();
for (const char of str) {
this.add(char);
}
}
get(char: string): number {
return this.map.get(char) ?? 0;
}
add(char: string) {
return this.map.set(char, this.get(char) + 1);
}
sub(char: string) {
return this.map.set(char, this.get(char) - 1);
}
delete(char: string) {
return this.map.delete(char);
}
isSameCount() {
return new Set(this.map.values()).size === 1;
}
}
export function equalFrequency(word: string): boolean {
const charCounter = new CharCounter(word);
for (const char of word) {
charCounter.sub(char);
if (charCounter.get(char) === 0) {
charCounter.delete(char);
}
if (charCounter.isSameCount()) {
return true;
}
charCounter.add(char);
}
return false;
}