Official

B - Substring Editorial by nok0


この問題では部分文字列を列挙し、重複を除いて個数を数えることが問われています。

部分文字列を求めるのは、C++ では substr という関数を用いることで行えます。Python では文字列をリストとして扱いスライス機能を用いるのが簡単です。

重複を除くには、set などのデータ構造を用いると便利です。前回の ABC346-C 解説 で重複を除くデータ構造について詳しく述べられていますので、そちらも参照してください。

実装例(C++):

#include <bits/stdc++.h>
using namespace std;

int main() {
    string s;
    cin >> s;
    set<string> st;
    for(int i = 0; i < s.size(); i++) {
        for(int j = 1; i + j <= s.size(); j++) {
            st.insert(s.substr(i, j));
        }
    }
    cout << st.size() << endl;
}

posted:
last update: