Problem H.
数对输入文件: standard input
输出文件: standard output
时间限制: 1 s
内存限制: 512 MB
给定一个字符串 s ,规定字符串下标从 1 开始,并且字符串的长度为 len 。求数对 < a, b > 的个数,同时满足下列三个条件:
- 1 ⩽ a < b ⩽ len
- s[a]̸ = s[b]
- 对于任意的 i (a < i < b) ,s[i] != s[a] 且 s[i] != s[b]
输入格式输入仅一行,包含一个字符串 s (2 ⩽ len ⩽ 10^5),仅包含小写字母。输出格式输出仅一行,包含一个整数,代表符合条件的数对 < a, b > 的个数。
样例
样例一
输入
sffdvss
输出
9
样例二
输入
upcacmclubyydsnb
输出
66
分析
遍历两个边界就可以了
代码
{string s1,s2;cin >> s1;int ans = 0;for (int i = 0;i < s1.size();++i) {unordered_set<char> st;st.emplace(s1[i]);for (itn j = i + 1;j <s1.size() && s1[j]!=s1[i];++j) {if(st.find(s1[j]) == st.end()) ans++;//de(s1[j]);st.emplace(s1[j]);}}cout << ans;
}