牛客链接
题目
NowCoder每天要给许多客户写电子邮件。正如你所知,如果一封邮件中包含多个收件人,收件人姓名之间会用一个逗号和空格隔开;如果收件人姓名也包含空格或逗号,则姓名需要用双引号包含。
现在给你一组收件人姓名,请你帮他生成相应的收件人列表。
输入描述
输入包含多组数据。
每组数据的第一行是一个整数n (1≤n≤128),表示后面有n个姓名。
紧接着n行,每一行包含一个收件人的姓名。姓名长度不超过16个字符。
输出描述
对应每一组输入,输出一行收件人列表。
解题思路
简单的字符串拼接,将输入的名字存在字符串数组里,根据每个名字是否包含特殊符号来分别实现不同的字符串拼接即可。需要注意的是Java输入第一个数字时需要用nextLine然后转为Int类型,否则不按行读取在下面读取字符串时会自动读取一个空字符串(踩坑),剩下就是注意输出的格式中有空格即可。
代码实现
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
int num = Integer.parseInt(sc.nextLine());
String[] name = new String[num];
for (int i=0;i<num;i++) {
name[i] = sc.nextLine();
}
System.out.println(Lname(name));
}
}
private static String Lname(String[] strings){
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i<strings.length;i++) {
if (strings[i].contains(",") || strings[i].contains(" ")) {
stringBuilder.append("\"");
stringBuilder.append(strings[i]);
stringBuilder.append("\"");
if (i != strings.length-1) {
stringBuilder.append(", ");
}
}else {
stringBuilder.append(strings[i]);
if (i != strings.length-1) {
stringBuilder.append(", ");
}
}
}
return stringBuilder.toString();
}
}