#65 A. Way Too Long Words|Codeforces
Codeforces Round #65 Problem - A - Codeforcesを解きました。
#include <bits/stdc++.h> #define REP(i,n) for(int i=0; i<(n); i++) #define REP2(i,x,n) for(int i=x; i<(n); i++) using namespace std; int main () { cin.tie(0); ios::sync_with_stdio(false); int N; string S; cin >> N; REP( i, N ) { cin >> S; if( S.size() > 10 ) { cout << S.front() << S.size()-2 << S.back() << endl; } else { cout << S << endl; } } return 0; }
問題自体は易しいのですが、Stringについてのメモだけ。
S.front()で文字列の先頭要素を、
S.back()で文字列の末尾要素を取得。
S[0]と、S[S.size()−1]と同値。
std::vectorでfront()は1度使った事があったのですがStringにもあるとは...(学び)
そう云えばA: お茶 - AtCoder Beginner Contest 038 | AtCoderも
末尾取得問題でしたけどS[S.size()-1]としていました...。
(悪い訳ではないと思いますけど...)
( 参考:C++ 文字列クラス std::string 入門 )