「BalticOI 2014 Day 1」三个朋友【字符串哈希】

题目描述
本题译自 BalticOI 2014 Day1 T2「Three Friends」

给定一个字符串 ,先将字符串 复制一次(变成双倍快乐),得到字符串 ,然后在 中插入一个字符,得到字符串 。

给出字符串 ,重新构造出字符串 。

所有字符串只包含大写英文字母。

输入格式
第一行一个整数 ,表示字符串 的长度。

第二行一个长度为 的字符串,表示字符串 。

输出格式
一行一个字符串,表示字符串 。

特别地:

如果字符串无法按照上述方法构造出来,输出 NOT POSSIBLE;
如果字符串 不唯一,输出 NOT UNIQUE。
样例
样例输入 1
7
ABXCABC
样例输出 1
ABC
样例输入 2
6
ABCDEF
样例输出 2
NOT POSSIBLE
样例输入 3
9
ABABABABA
样例输出 3
NOT UNIQUE

分析:显然字符串哈希,这题主要是想考对哈希的理解。
字符串删了一个字符,哈希值会怎么改变?
如S=“ABCD”,S’=“ABD”
S的哈希值=1×b3+2×b2+3×b1+4
S’的哈希值=1×b2+2×b1+4
就是C后面的哈希值不变,前面的哈希值会根据后面的长度进行改变,可以多造几个例子加深理解
那么这题就A了

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值