けんちょんの競プロ精進記録

競プロの精進記録や小ネタを書いていきます

AtCoder ABC 069 B - i18n (8Q, 灰色, 200 点)

文字列の長さを取得する練習!

問題概要

3 文字以上の文字列  S が与えられる。この文字列  S を次の規則にしたがって変換したものを出力せよ。

(先頭の文字)(先頭と末尾を除外した文字列の長さを表す数値)(末尾の文字)

たとえば、"internationalization" を変換すると "i18n" となる。

考えたこと

文字列 S に対して、先頭と末尾を除外した文字列の長さ len は次のように求められる(C++)。

int len = S.size() - 2

つまり、文字列 S の長さ(S.size())から先頭と末尾の 2 文字分を引いている。

あとは、先頭の文字 S[0]len、末尾の文字 S.back() を順に出力すればよい。

コード

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

int main() {
    string S;
    cin >> S;
    int len = S.size() - 2;
    cout << S[0] << len << S.back() << endl;
}