最新文章

这里会显示最新的几篇文章摘要。

数对(模拟)

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;
}

posted @ 2025-03-11 08:40  bakul  阅读(25)  评论(0)    收藏  举报