首页 > 试题广场 >

收件人列表

[编程题]收件人列表
  • 热度指数:4534 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
NowCoder每天要给许多客户写电子邮件。正如你所知,如果一封邮件中包含多个收件人,收件人姓名之间会用一个逗号和空格隔开;如果收件人姓名也包含空格或逗号,则姓名需要用双引号包含。
现在给你一组收件人姓名,请你帮他生成相应的收件人列表。

输入描述:
输入包含多组数据。

每组数据的第一行是一个整数n (1≤n≤128),表示后面有n个姓名。

紧接着n行,每一行包含一个收件人的姓名。姓名长度不超过16个字符。


输出描述:
对应每一组输入,输出一行收件人列表。
示例1

输入

3
Joe
Quan, William
Letendre,Bruce
2
Leon
Kewell

输出

Joe, "Quan, William", "Letendre,Bruce"
Leon, Kewell
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		while(in.hasNext()){
			int n=in.nextInt();
			int tn=n;
			StringBuilder sb=new StringBuilder();
			while(n--!=-1){
				String s=in.nextLine();
				int len=s.length();
				char[] cA = s.toCharArray();
				boolean hasFh=false;
				for (int i = 0; i < len; i++) {
					char c = cA[i];
					if(c==',' || c==' '){
						hasFh=true;
						break;
					}
				}
				
				if(hasFh){
					sb.append("\""+s+"\"");
				}
				else{
					sb.append(s);
				}
				
				if(n!=-1 && n!=tn-1){
					sb.append(", ");
				}
			}
			System.out.println(sb);
		}
	}
}
发表于 2016-10-14 16:25:43 回复(0)
正常思路即可
// write your code here cpp
#include<iostream>
#include<string>
using namespace std;
int main()
{
    int n=0;
    while(cin>>n)
    {
      string str;
      getchar();//数字后面有个换行符不要忘了
      for(int i=0;i<n;i++){
        getline(cin,str);
       if(str.find(' ')!=str.npos||str.find(',')!=str.npos)
             cout<<'"'<<str<<'"';
       else    
           cout<<str;
       (i+1!=n)?cout<<", ":cout<<endl;//最后一个不用输出逗号空格按要求输出换行
        }
    }
    return 0;
}



编辑于 2020-03-07 16:35:09 回复(0)
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main(){
    int n;
    while(cin >> n){
        if(n == 0){
            continue;
        }
        cin.get();
        vector<string> v(n);
        for(int i = 0; i < n; ++i){
            getline(cin, v[i]);
            if(v[i].find(",") != string::npos ||
               v[i].find(" ") != string::npos){
                v[i].insert(0, "\"");
                v[i].insert(v[i].size(), "\"");
            }
        }
        for(int i = 0; i < n; ++i){
            cout << v[i];
            if(i < n - 1){
                 cout << ", ";
            }
            else{
                 cout << endl;
            }
        }
    }
    return 0;
}

发表于 2020-08-21 09:21:54 回复(0)
import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        while(scanner.hasNext()){
            int n=scanner.nextInt();
            scanner.nextLine();
            ArrayList<String> arrayList=new ArrayList<String>();
            for(int i=0;i<n;i++){
                String name=scanner.nextLine();
                if(name.contains(" ")||name.contains(",")){
                    arrayList.add("\""+name+"\"");
                }else{
                    arrayList.add(name);
                }
            }
            for(int i=0;i<n-1;i++){
                System.out.print(arrayList.get(i)+", ");
            }
            System.out.println(arrayList.get(n-1));
        }
    }
}

发表于 2018-09-20 22:30:34 回复(1)
import java.util.*;
public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		while (sc.hasNextLine()) {
			int n = Integer.parseInt(sc.nextLine());
			String[] arr = new String[n];
			for (int i = 0; i < n; i ++ ) {
				String s = sc.nextLine();
				if(s.contains(",") || s.contains(" ")) s = "\"" + s + "\"";
				arr[i] = s;
			}
			for (int i = 0; i < n; i ++ ) {
				if(i == n - 1) System.out.println(arr[i]);
				else System.out.print(arr[i] + ", ");
			}
		}
	}
}

发表于 2016-10-14 00:43:41 回复(0)
#include<iostream>
(720)#include<string>
using namespace std;
int main()
{
	int n;
	string name;
	string namelist;
	while (cin>>n)
	{
		getchar( );
		namelist.clear();
		while (n> 0)
		{
			getline(cin, name);
			if (name.find(',') != -1 || name.find(' ') != -1)
			{
				name.resize(name.size() + 1);
		       for (int i = name.size() - 1; i > 0; i--)
			   {
					name[i] = name[i - 1];

			   }
				name[0] = '"';
				name.push_back('"');
				if (n != 1)
				{
					name.push_back(',');
					name.push_back(' ');
				}
				namelist += name;
				n--;
			}
			else
			{   
				if (n != 1)
				{
					name.push_back(',');
					name.push_back(' ');
				}
				namelist += name;
				n--;

			}
		}
		cout << namelist << endl;
	}
	return 0;
}

发表于 2020-03-06 15:37:41 回复(1)

最简洁代码

int main()
{
    int n;
    while(cin>>n)
    {
        getchar(); //刷新缓冲区
        while(n--)
        {
            string str;
            getline(cin, str);
            if(str.find(',')!= -1 || str.find(' ')!= -1)
            {
                str.insert(str.begin(), '"');
                str.insert(str.end(), '"');
            }
            if(n == 0)
                cout<<str<<endl;
            else
                cout<<str<<", ";
        }
    }
    return 0;
}
发表于 2020-03-06 14:31:52 回复(3)
#include <iostream>
#include <string>
using namespace std;
int main()
{
    int n;
    while(cin>>n)
    {
        cin.get();
        string name;
        for(int i=0;i<n;i++)
        {
            getline(cin,name);
            if(i!=n-1)
            {
                if(name.find(',')!=-1||name.find(' ')!=-1)
                    cout<<'\"'<<name<<'\"'<<','<<' ';
                else
                    cout<<name<<','<<' ';
            }
            else
            {
                if(name.find(',')!=-1||name.find(' ')!=-1)
                    cout<<'\"'<<name<<'\"'<<endl;
                else
                    cout<<name<<endl;
            }
        }
    }
    return 0;
}

发表于 2017-10-10 11:02:35 回复(0)
// write your code here

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        while (sc.hasNext()) {
            int n = sc.nextInt();
            sc.nextLine();
            for (int i = 0; i < n; i++) {
                String s = sc.nextLine();
                if (s.contains(" ") || s.contains(",")) {
                    System.out.print("\"" + s + "\"");
                } else {
                    System.out.print(s);
                }
                if (i < n - 1) System.out.print(", ");
            }
            System.out.println();
        }
    }
}

编辑于 2022-10-01 15:11:26 回复(0)
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <functional>
#include <climits>
#include<unordered_map>
#include<unordered_set>

using namespace std;

bool containSpaceOrComma(string& s)
{
	for (auto&c : s)
	{
		if (c == ' ' || c == ',') return true;
	}

	return false;
}

int main()
{
	//freopen("in.txt", "r", stdin);
	int n;
	while (cin >> n)
	{
		getchar();
		string s;
		for (int i = 0; i < n; ++i)
		{
			getline(cin, s);
			if (containSpaceOrComma(s)) cout << "\"" << s << "\"";
			else cout << s;
			if (i < n - 1) cout << ", ";
		}
		cout << endl;
	}
}
 

发表于 2017-07-15 18:14:18 回复(0)
 
import java.util.Scanner;

public class Main6 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        while (scan.hasNext()){
            int first = Integer.parseInt(scan.nextLine());
            String[] arr1 = new String[first];
            for(int i = 0; i < first; i++){
                String line = scan.nextLine();
                if (line.contains(" ") || line.contains(",")){
                    line = "\"" + line + "\"";
                }
                arr1[i] = line;
            }
            if (arr1.length > 0){
                System.out.println(String.join(", ", arr1));
            } 
        }
    }
}

发表于 2024-03-06 10:34:38 回复(0)
 public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNext()) { // 注意 while 处理多个 case
            int n = Integer.parseInt(in.nextLine());
            String A = "";
            while (n > 0) {
                String B = in.nextLine();
                n--;
                if (B.contains(",") || B.contains(" ")) {
                     if(A.equals("")){
                        B = "\"" + B + "\"";
                    }else{
                        B = ", " + "\"" + B + "\"";
                    }
                   
                   
                   
                } else {
                    if(!A.equals("")){
                        B = ", " + B;
                    }
                }
                A = A + B;
            }
            System.out.println(A);

        }
    }
发表于 2023-08-18 12:37:42 回复(0)
import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextInt()) { // 注意 while 处理多个 case
            int n = in.nextInt();
            in.nextLine();
            StringBuffer s = new StringBuffer();
            while(n != 0) {
                String name = in.nextLine();
                if(name.contains(",") || name.contains(" ")) {
                    s.append("\"");
                    s.append(name);
                    s.append("\"");
                } else {
                    s.append(name);
                }
                if(n != 1) {
                    s.append(", ");
                }
                n--;
            }
            System.out.println(s);           
        }
    }
}

发表于 2023-08-17 14:48:24 回复(0)
import java.util.Scanner;

/*
 * 收件人列表
 */
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNextLine()) {
            String strNum = sc.nextLine();
            int num = Integer.parseInt(strNum);
            for (int i = 0; i < num; i++) {
                String str = sc.nextLine();
                if (i == num - 1) {
                    if (str.contains(",") || str.contains(" ")) {
                        System.out.print("\"" + str + "\"");
                    } else {
                        System.out.print(str+" ");
                    }
                } else {
                    if (str.contains(",") || str.contains(" ")) {
                        System.out.print("\"" + str + "\"" + ", ");
                    } else {
                        System.out.print(str + ", ");
                    }
                }
            }
            System.out.println();
           
        }
    }
}

发表于 2023-04-13 16:28:24 回复(0)
#include<iostream>
#include<string>
#include<vector>
using namespace std;

int main()
{
    int n;
    while(cin >> n)
    {
        getchar();
        vector<string> v(n);
        for(int i = 0; i < n; i++)
        {
            string name = "";
            getline(cin,name);
            v[i] = name;
        }
        
        for(int i = 0; i < n; i++)
        {
            if(v[i].find(',') != string::npos || v[i].find(' ') != string::npos){
                string tmp = "\"" + v[i] + "\"";
                swap(tmp,v[i]);
            }
        }
        
        for(int i = 0; i < v.size()-1; i++){
            cout << v[i] << ", ";
        }
        cout << v[v.size()-1] << endl;
    }
    return 0;
}

发表于 2023-02-15 15:46:21 回复(0)
// write your code here
/*重点是审题,用一个逗号和空格隔开;如果收件人姓名也包含空格或逗号 */


import java.util.*;

public class Main{
  public static void main(String[] args){
    Scanner sc = new Scanner(System.in);
    while(sc.hasNextLine()){
    int count = sc.nextInt();
    sc.nextLine();
    ArrayList<String> names = new ArrayList<String>();
    for(int i = 0; i <count;i++){
      String nameStr = sc.nextLine();
      if(nameStr.indexOf(',')>=0 || nameStr.indexOf(' ')>= 0){
        nameStr = "\""+nameStr+"\"";
      }
        names.add(nameStr);
    }
    for(int j = 0; j <names.size();j++){
      String name = names.get(j);
      System.out.print(name);
      if(j<count-1){
      System.out.print(", ");
      }
    }
      System.out.println();
    }
  }
}


编辑于 2022-06-12 08:34:52 回复(0)
// write your code here
import java.util.Scanner;
public class Main{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        while(sc.hasNextLine()){
            int n=sc.nextInt();
            for(int i=0;i<n;i++){
                String str=sc.nextLine();
                if(str.contains(" ")||str.contains(",")){
                    if(i==n-1){
                        System.out.print("\""+str+"\"");
                    }
                    else{
                        System.out.print("\""+str+"\"");
                        System.out.print(", ");
                    }
                }
                else{
                    if(i==n-1){
                        System.out.print(str);
                    }
                    else{
                        System.out.print(str+", ");
                    }
                }
            }
            System.out.println();
        }
    }
}
请检查是否存在数组越界等非法访问情况
Exception in thread "main" java.util.InputMismatchException
    at java.util.Scanner.throwFor(Scanner.java:864)
    at java.util.Scanner.next(Scanner.java:1485)
    at java.util.Scanner.nextInt(Scanner.java:2117)
    at java.util.Scanner.nextInt(Scanner.java:2076)
    at Main.main(Main.java:7)

求大佬指点这道题这种解法为什么报错
发表于 2022-06-03 00:10:13 回复(0)
两种方式存储修改后的名单(注意系统输入格式)
1. 用String 字符串存储
import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNextLine()) {
            int n = Integer.parseInt(sc.nextLine());
            String result = "";
            for (int i = 0; i < n; i++) {
                String cur = sc.nextLine();
                if (cur.contains(",") || cur.contains(" ")) cur = "\"" + cur + "\"";
                if(i != n-1) {
                    result += cur;
                    result += ", ";
                }else result += cur;
            }
            System.out.println(result);
        }
    }
}
2. 用数组存储(注意输出格式)
import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNextLine()) {
            int n = Integer.parseInt(in.nextLine());
            String[] arr = new String[n];
            for (int i = 0; i < n; i++) {
                String cur = in.nextLine();
                if (cur.contains(",") || cur.contains(" ")) cur = "\"" + cur + "\"";
                arr[i] = cur;
            }
            for (int i = 0; i < n; i++) {
                if(i == n-1) System.out.println(arr[i]);
                else System.out.print(arr[i] + ", ");
            }
        }
    }
}



发表于 2022-06-02 17:39:47 回复(0)
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNext()) {
    int n = in.nextInt();
    in.nextLine();//换行操作
    List<String> list = new ArrayList<>();    

    for(int i = 0;i < n;i++){
        String arr = in.nextLine();
        if(arr.contains(",") || arr.contains(" ")){
            list.add("\""+arr+"\"");
        }else{
            list.add(arr);
        }
    }

    for(int i = 0;i < n - 1;i++){
        System.out.print(list.get(i) + ", ");
    }
        System.out.println(list.get(n - 1));

        }
    }


方法二:
import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            int n = sc.nextInt();
            sc.nextLine();
            for(int i = 0;i < n;i++){
                String s = sc.nextLine();
                if(s.contains(" ") || s.contains(",")){
                    System.out.print("\"" + s + "\"");
                }else{
                      System.out.print( s );
                }
                if(i == n - 1){
                    System.out.println();
                }else{
                    System.out.print( ", " );
                }
            }
        }
    }
}



编辑于 2022-05-18 16:27:52 回复(0)
import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            int n = Integer.parseInt(scanner.nextLine());
            String ans = "";
            for (int i = n; i > 0; i--) {
                String s = scanner.nextLine();
                if (s.contains(",") || s.contains(" ")) {
                    s = "\"" + s + "\"";
                }
                if (i != 1) {
                    ans = ans + s + ", ";
                } else {
                    ans = ans + s;
                }
            }
            System.out.println(ans);
        }
    }
}

发表于 2022-03-31 22:28:02 回复(0)