Codeforces 71 A. Way Too Long Words

71 A. 单词过长

直译版解释

有时,像 localization 或 internationalization 这样的单词太长了,以至于在一个文本中多次书写非常烦人。我们考虑把一个超过 10 个字符的过长的单词都用一个特殊的缩写来代替。

这个缩写像这样:我们保留单词的首字母和尾字母,在它们之间,我们写上首尾字母之间的字母数量。该数字采用十进制系统,不包含任何前导零。

因此,localization 将被缩写为 l10n,internationalization 将被缩写为 i18n。

太长的单词应该被缩写所取代,不太长的单词不应该进行任何的更改。

人话版解释

当一个单词超过 10 个字符时,只保留首字母和尾字母,中间使用单词长度 – 首字母 – 尾字母作为长度数值,即单词长度 – 2。

输入

第一行包含一个整数 n(1 ≤ n ≤ 100)。以下 n 行中,每行都包含一个单词。所有单词都由小写拉丁字母组成,长度为 1 到 100 个字符。

输出

输出 n 行。第 i 行应包含从输入数据替换第 i 个单词的结果。

样例输入

4
word
localization
internationalization
pneumonoultramicroscopicsilicovolcanoconiosis

样例输出

word
l10n
i18n
p43s

关键逻辑

遍历每一行的单词:

如果单词长度不超过 10 个字符,则保持原样输出;

如果单词长度超过 10 个字符,则输出单词的缩写,缩写为 首字母 + (单词长度 – 2) + 尾字母。

代码

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class WayTooLongWords {

    public static void main(String[] args) throws Exception {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        int num = Integer.parseInt(reader.readLine());
        String[] strings = new String[num];
        for (int i = 0; i < num; i++) {
            strings[i] = reader.readLine();
        }
        for (int i = 0; i < num; i++) {
            String str = strings[i];
            char[] strArr = str.toCharArray();
            if (strArr.length <= 10) {
                continue;
            }
            int cnt = strArr.length - 2;
            strings[i] = (strArr[0] + "") + cnt + (strArr[strArr.length - 1] + "") + "";
        }
        for (String str : strings) {
            System.out.println(str);
        }
    }

}
此文章是由nikbobo发表在算法分类目录的。将固定链接加入收藏夹。

关于 nikbobo

Nikbobo,本名刘永强,记忆空间站长,男,1998 年出生于广东茂名,至今(2022 年)23 岁,目前(2022 年)就读于广州大学华软软件学院,常以“nikbobo”这个网名混迹互联网。如无特殊注明,Nikbobo 在本站发表的文章,遵循 知识共享 署名-非商业性使用-相同方式共享 4.0 国际 许可协议。详情请参阅关于页面的作者介绍。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注