取得文字列は、説明の長い、長い文字列を演習します

:ために書かれhttp://codeforces.com/problemset/problem/71/A

タイトル説明

長い、長い文字列は、「ローカリゼーション」または「国際化」あなたはこれらの言葉を転写する場合、これらの文字列は、多くの言葉なので、多くの努力が含まれているなどの文字列です。
私たちは、長い文字列長い文字列を定義する場合、文字列の長さが10より大きいがある場合にのみ。
私たちは、単純化の単語に今あるので、すべての良い長い文字列を簡素化する必要があります。
文字列Sを、それが良好な長い文字列(10を超える)である場合、我々はそれが3つの部分をスプライスするために変換、:次のように我々の簡素化
、第一の部分は、最初の文字sである
第二部まず最初と最後の文字の残りの要素を除去した後に数であり、
第三の部分は、最後の文字sです。
たとえば、「ローカリゼーション」の文字列のために、その長さは、10以上12であるので、それは良い長い文字列です。その動作の結果は、「ローカライゼーション」を簡略化されています。
「I18N」として簡略「国際」の操作後に
「APPLE」、単語の要素数が10を超えていないので- 「APPLE」または単純化された操作自体つつ。
あなたが単語の数を与えている、あなたは一度に簡略化すべての単語の後に出力する必要があります。

入力形式

入力整数の最初のラインを含む\(N-(1 \ N-LE \ル100)\)あなたは、治療を必要とする単語の数を示すために、。
次の\(\ N-)線、文字列s(1〜100秒の長さ)を含む各行。

出力フォーマット

出力\(N- \)行、各行は簡略入力ワードの結果に対応します。

サンプル入力

4
word
localization
internationalization
pneumonoultramicroscopicsilicovolcanoconiosis

サンプル出力

word
l10n
i18n
p43s

トピック分析

各列のための\(S \)の長さであると仮定すると、(\ N-)\、その長さの場合(\ \ル\) 10、我々のように出力され、そうでない場合、我々は、出力に必要\(S [0] +(N-2)+ S [N-1] \) その上に。
以下を達成するために、コードchar型の配列を使用します:

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

char ch[110];
int n, m;

int main() {
    cin >> n;
    while (n --) {
        cin >> ch; m = strlen(ch);
        if (m <= 10) cout << ch << endl;
        else cout << ch[0] << m - 2 << ch[m-1] << endl;
    }
    return 0;
}

以下を達成するために、コードの文字列を使用します:

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

string s;
int n, m;

int main() {
    cin >> n;
    while (n --) {
        cin >> s; m = s.length();
        if (m <= 10) cout << s << endl;
        else cout << s[0] << m - 2 << s[m-1] << endl;
    }
    return 0;
}

おすすめ

転載: www.cnblogs.com/zifeiynoip/p/11450560.html
おすすめ