OR135. 单词缩写
描述
在日常书面表达中,我们经常会碰到很长的单词,比如"localization"、"internationalization"等。为了书写方便,我们会将太长的单词进行缩写。这里进行如下定义:
如果一个单词包含的字符个数达到或者超过10则我们认为它是一个长单词。所有的长单词都需要进行缩写,缩写的方法是先写下这个单词的首尾字符,然后再在首尾字符中间写上这个单词去掉首尾字符后所包含的字符个数。比如"localization"缩写后得到的是"l10n","internationalization"缩写后得到的是"i18n"。现给出n个单词,将其中的长单词进行缩写,其余的按原样输出。
。
输入描述
第一行包含要给整数n。1≤n≤100输出描述
按顺序输出处理后的每个单词。示例1
输入:
4 word localization internationalization pneumonoultramicroscopicsilicovolcanoconiosis
输出:
word l10n i18n p43s
C 解法, 执行用时: 1ms, 内存消耗: 376KB, 提交时间: 2020-08-16
#include<stdio.h> #include<string.h> int main() { int n=0,i,len; char a[122]; scanf("%d",&n); for(i=0;i<n;i++) { scanf("%s",a); len=strlen(a); if(len<10) printf("%s\n",a); else printf("%c%d%c\n",a[0],strlen(a)-2,a[strlen(a)-1]); } }
C 解法, 执行用时: 2ms, 内存消耗: 224KB, 提交时间: 2019-01-14
#include <stdio.h> #include <string.h> #define BUFFER_LEN 128 int main() { int n; int i; char buffer[BUFFER_LEN]; scanf("%d", &n); for(i = 0; i < n; i++){ int length; scanf("%s", buffer); if((length = strlen(buffer)) >= 10) printf("%c%d%c\n", buffer[0], length - 2, buffer[length-1]); else printf("%s\n", buffer); memset(buffer, 0, BUFFER_LEN); } return 0; }