#603. CF765B Code obfuscation

CF765B Code obfuscation

题目描述

Kostya 为了防止代码被攻击,决定在比赛前对代码做“混淆”。其混淆规则如下:

  • 先找到程序中第一个出现的变量名(原程序中不使用单字母变量名),把它的所有出现位置都替换为字母 a
  • 再找到尚未被替换的第二个变量名,把它的所有出现位置都替换为 b
  • 以此类推,第三个替换为 c,……。

已知程序中不同的标识符不超过 2626 个。给出将程序中所有空白字符去掉后、仅由小写字母组成的串 SS,判断这个 SS 是否可能是上述混淆的结果

换言之:如果从左到右扫描 SS,每次遇到一个未出现过的新字母时,它应该恰好是按照 a,b,c,... 的顺序出现;否则就是非法。

输入格式

一行,一个由小写英文字母组成的字符串 SS1S5001\le |S|\le 500)。

输出格式

如果 SS 可以是混淆后的结果,输出 YES;否则输出 NO

样例输入输出

样例输入1

abacaba

样例输出1

YES

样例输入2

jinotega

样例输出2

NO

说明/提示

样例 1 中可对应的原标识符序列为 “number string number character number string number”。按规则依次把 number→astring→bcharacter→c,得到 abacaba

数据范围与测试点说明

  • 1S5001\le |S|\le 500
  • SS 仅由小写英文字母组成;
  • 原程序中不同标识符个数不超过 2626

时间限制与内存限制

  • 时间限制:11
  • 内存限制:256256 MB