第一行一个数 表示操作个数。
第二行一个字符串表示初始字符串 init。
接下来 行,每行两个字符串 Type, Str。
Type 是 ADD 的话表示在后面插入字符串。
Type 是 QUERY 的话表示询问某字符串在当前字符串中出现了几次。
为了体现在线操作,你需要维护一个变量 mask,初始值为 。
读入串 Str 之后,使用下述过程将之解码成真正询问的串 TrueStr:
String decodeWithMask(String s, int mask) {
char[] chars = s.toCharArray();
for (int j = 0; j < chars.length; j++) {
mask = (mask * 131 + j) % chars.length;
char t = chars[j];
chars[j] = chars[mask];
chars[mask] = t;
}
return new String(chars);
}
插入的时候,将 TrueStr 插到当前字符串后面即可。