#4186. 一次性交换(One Time Swap)

一次性交换(One Time Swap)

题目描述

你得到一个字符串 SS。找出通过执行以下操作恰好一次可以得到的不同字符串的数量。

  • NNSS 的长度。选择一对整数 (i,j)(i,j),满足 1i<jN1 \leq i < j \leq N,并交换 SS 的第 ii 个和第 jj 个字符。

在本题的约束条件下,可以证明你总是可以执行这个操作。

输入格式

输入SS

输出格式

输出通过在 SS 上执行上述操作恰好一次可以得到的不同字符串的数量。

样例

abc
3
aaaaa
1

样例解释

【样例1说明】
SS 的长度为 33,所以满足 1i<j31 \leq i < j \leq 3 的整数对 (i,j)(i,j) 有三个:(1,2)(1,2)(1,3)(1,3)(2,3)(2,3)

  • 交换 SS 的第 1 个和第 2 个字符得到 bac
  • 交换 SS 的第 1 个和第 3 个字符得到 cba
  • 交换 SS 的第 2 个和第 3 个字符得到 acb

因此,对 abc 进行操作可以得到三个字符串:baccbaacb,所以打印 33
【样例2说明】
交换任意两个字符都会使 SS 保持为 aaaaa。因此,只有一个字符串可以通过操作得到。

数据范围

2S1062 \le S \le 10^6SS仅由小写英文字母组成。

来源

  • AtCoder ABC345C