[字串] CF-71A. Way Too Long Words
題目連結:http://codeforces.com/contest/71/problem/A
Sometimes some words like "localization" or "internationalization" are so long that writing them many times in one text is quite tiresome.
Let's consider a word too long, if its length is strictly more than 10 characters. All too long words should be replaced with a special abbreviation.
This abbreviation is made like this: we write down the first and the last letter of a word and between them we write the number of letters between the first and the last letters. That number is in decimal system and doesn't contain any leading zeroes.
Thus, "localization" will be spelt as "l10n", and "internationalization» will be spelt as "i18n".
You are suggested to automatize the process of changing the words with abbreviations. At that all too long words should be replaced by the abbreviation and the words that are not too long should not undergo any changes.Input
The first line contains an integer n (1 ≤ n ≤ 100). Each of the following n lines contains one word. All the words consist of lowercase Latin letters and possess the lengths of from 1 to 100 characters.Output
Print n lines. The i-th line should contain the result of replacing of the i-th word from the input data.Examples input
4
word
localization
internationalization
pneumonoultramicroscopicsilicovolcanoconiosisExamples output
word
l10n
i18n
p43s
題目大意:
有一些單詞太長了,寫起來太累了。如果有一些單詞長度(字母個數)超過十,我們就用[首字母+中間字母個數+尾字母]的格式書寫,如果不超過十,就按照原來單詞書寫。輸入一個整數n,表示單詞個數,接下來有n個單詞,請你正確書寫單詞。
問題分析:
字元陣列或字串都可以做,只需要求出字串長度,判斷長度就可以了。
#include <bits/stdc++.h> using namespace std;\ int main(){ char s[110]; int n; cin >> n; for(int i=1; i<=n; i++){ cin >> s; int len = strlen(s); if(len>10) cout << s[0] << len-2 << s[len-1] << endl; else cout << s << endl; } return 0; }