分类计算数目

假期到了,孩子的同学们来你们家玩,你为他们买了几盒糖果。每个盒子都包含不同类型的糖果的集合。为了防止孩子们因为分到不同数量和类型的糖果而吵闹,你决定打开所有的盒子,取出所有的糖果,并均匀地按孩子个数分成多份。当然,均匀的分配一堆糖果有可能做不到,总会出现零头的,你会把每种类型的糖果均匀的分给孩子们,多余的那些糖果藏起来。

 

输入:

第一行是一个数字,代表孩子总数。合法值[2,10]

第二行是一个以逗号”,”分隔的字符串,每个字符串被双引号括起来,代表一个糖果盒,字符串中的每个字符代表一个糖果。相等的字符是相同类型的糖果:例如,所有”B”是相同的糖果,所有”L”是相同的糖果,等等。糖果盒数目介于[1,50],每个糖果盒字符串长度限制[1,50],字符合法取值为数字和大小写英文字符,大小写敏感。

字符串输入需严格按照要求,不符合要求的输入或是在合法值以外的参数值,输出打印-1,-1

 

输出:

打印以”,”分隔的两个数字:第一个是每个孩子分到的糖果数量,第二个是剩下的糖果数量。

如果出错,比如输入值非法,打印-1,-1

 

Examples

Case 1)

input:

2

"FOO","BAR","BAZ","TOPCODER"

Returns: 5,7

 

Case 2)    

input:

2

"X"

Returns: 0,1

 

Case 3)    

input:

2

"GIVING","CANDY","TO","CHILDREN","CANNOT","BE","CHALLENGING","RIGHT"

Returns: 17,11

 

Case 4)    

input:

2

"WITHOUT","IT","IM","JUST","ESPR"

Returns: 5,9

 

Case 5)    

input:

2

"PHQGHUMEAYLNLFDXFIRCVSCXGGBWKFNQDUXWFNFOZVSRTKJPRE","PGGXRPNRVYSTMWCYSYYCQPEVIKEFFMZNIMKKASVWSRENZKYCXF","XTLSGYPSFADPOOEFXZBCOEJUVPVABOYGPOEYLFPBNPLJVRVIPY","AMYEHWQNQRQPMXUJJLOOVAOWUXWHMSNCBXCOKSFZKVATXDKNLY","JYHFIXJSWNKKUFNUXXZRZBMNMGQOOKETLYHNKOAUGZQRCDDIUT","EIOJWAYYZPVSCMPSAJLFVGUBFAAOVLZYLNTRKDCPWSRTESJWHD","IZCOBZCNFWLQIJTVDWVXHRCBLDVGYLWGBUSBMBORXTLHCSMPXO","HGMGNKEUFDXOTOGBGXPEYANFETCUKEPZSHKLJUGGGEKJDQZJEN","PEVQGXIEPJSRDZJAZUJL"

Returns: 203,14


Case 6)

Input:

2

"PHQGHUMEAYLNLFDXFIRCVSCXGGB,WKFNQDUXWFNFOZVSRTKJPRE"

Returns: -1,-1




源码:

package demo1;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class test {
	public static void main(String[] args) {
		int fende=0,shengyu=0;
		System.out.println("input");
		Scanner input1 = new Scanner(System.in);
		Scanner input2 = new Scanner(System.in);
		int n = input1.nextInt();
		String str = input2.next();
		String reg = "((\")[A-Za-z0-9]{1,50}(\")(,)?){1,50}";
		boolean b = str.matches(reg);
		if (b && n<=10 && n>=2) {
			Map<Character, Integer>map = new HashMap<Character, Integer>();
            for (char s : str.toCharArray()){
            	Integer i = map.get(s);
            	if(i == null){
            		map.put(s, 1);
            	}else{
            		map.put(s,i+1);
            	}
            }
            for(char key : map.keySet()){
            	if(key !='"' && key!=','){
            		fende +=map.get(key)/n;
            		shengyu +=map.get(key)%n;
            	}
            }
			System.out.println("Returns:"+fende+","+shengyu);
		} else {
			System.out.println("-1,-1");
		}
	}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值