首页 > 试题广场 >

个位数统计 (15)

[编程题]个位数统计 (15)
  • 热度指数:23104 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
给定一个k位整数N = dk-1*10k-1 + ... + d1*101 + d0 (0<=di<=9, i=0,...,k-1, dk-1>0),请编写程序统计每种不同的个位数字出现的次数。例如:给定N = 100311,则有2个0,3个1,和1个3。

输入描述:
每个输入包含1个测试用例,即一个不超过1000位的正整数N。


输出描述:
对N中每一种不同的个位数字,以D:M的格式在一行中输出该位数字D及其在N中出现的次数M。要求按D的升序输出。
示例1

输入

100311

输出

0:2<br/>1:3<br/>3:1
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String n = in.nextLine();
        String m = "0123456789";
        int num[] = new int[10];

            for (int j = 0; j < m.length() ; j++) {
                int count = 0;
                for (int i = 0; i < n.length(); i++) {
                    if(n.charAt(i) == m.charAt(j)){
                        count++;
                    }
                }
                num[j] = count;
            }
        for (int k = 0; k < 10;k++) {
            if(num[k] != 0){
                System.out.println(k+":"+num[k]);
            }
        }
    }
}

反正就是0-9遍历两次就好咯!
发表于 2020-06-11 23:31:38 回复(0)
import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            String str = sc.nextLine();
            HashMap<Character,Integer> map = new HashMap<>();
            for(char ch:str.toCharArray()){
                map.put(ch,map.getOrDefault(ch,0)+1);
            }
            for(Map.Entry<Character,Integer> entry : map.entrySet()){
                System.out.println(entry.getKey() +":"+entry.getValue());
            }
        }
    }
}

发表于 2020-03-12 20:31:55 回复(0)
  Java实现,已通过。注意题目是“一个不超过1000位的正整数”,而不是 ”不超过1000“,建个数组0~9用于统计各数字出现的次数即可,代码如下:
import java.util.*;
public class Main {
    //思路:建个数组0~9用于统计次数M
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
       String str=in.nextLine();
        int[] times=new int[10];
        for(char c:str.toCharArray())
        {
        times[c-'0']++;
        }
        for(int i=0;i<10;i++)
        {if(times[i]!=0)
            System.out.println(i+":"+times[i]);}
    }}


发表于 2020-02-07 11:37:11 回复(0)

只能说 java 1.8 新特性真好用

import java.util.*;

public class Pat1011 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        char[] num = in.next().toCharArray();

        Map<Character, Integer> count = new TreeMap<>((a,b)->a.compareTo(b));

        for(char c : num) {
            count.merge(c, 1, (a,b)->a+b);
        }

        for(Map.Entry<Character, Integer> e : count.entrySet()) {
            System.out.println(e.getKey() + ":" + e.getValue());
        }

    }
}
发表于 2019-06-15 14:33:45 回复(0)
import java.util.*;
public class Main {

    /**
     * 个位数统计
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner sc=new Scanner(System.in);
        String N=sc.next();
        int a[]=new int[N.length()];
        for(int i=0;i<N.length();i++)
        {
            a[i]=Integer.parseInt(N.charAt(i)+"");
            
        }
        int temp;
        for(int i=0;i<N.length();i++)
        {            
            for(int j=0;j<N.length()-1-i;j++)
            {
                if(a[j]>a[j+1])
                {
                    temp=a[j];
                    a[j]=a[j+1];
                    a[j+1]=temp;
                }
            }
        }

        int x=1;//记录不同数的个数
        for(int i=0;i<N.length()-1;i++)
        {
            if(a[i]<a[i+1])
                x++;
        }
        //找出有哪些数与其对应的个数
        int D[]=new int[x];//有哪些数
        int shu[]=new int[x];//对应的个数
        for(int i=0,j=0,k=0;i<N.length()&&j<x&&k<N.length();)
        {            
            if(a[i]==a[k])
            {
                D[j]=a[i];
                shu[j]=k-i+1;
                k++;
            }            
            else
            {
                i=k;
                j++;            
            }
        }        
        //输出
        for(int i=0;i<x;i++)
        {
            System.out.println(D[i]+":"+shu[i]);
        }
        
    }

}

发表于 2019-06-11 17:25:52 回复(0)

终于可以AC啦!!!

import java.util.Scanner;
public clas***ain{
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String s = scanner.next();
        StringBuffer buffer = new StringBuffer(s);
        int []array = {0,0,0,0,0,0,0,0,0,0};
        for (int i = 0; i < buffer.length(); i++) {
            char c = buffer.charAt(i);
            Integer integer = new Integer(c);
            array[integer.intValue()-48]++;        }
        for (int i = 0; i < array.length; i++) {
            if (array[i]!=0){
                System.out.println(i+":"+array[i]);
            }        }    }}


发表于 2019-05-17 13:09:41 回复(0)
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String n = sc.next();
        String[] nc = n.split("");
        int[] result = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
        int temp = 0;
        for (int i = 1; i < nc.length; i++) {
            temp = Integer.parseInt(nc[i]);
            result[temp]++;
        }int i=0;
        while(i<10){
            if(result[i]!=0)System.out.println(i+":"+result[i]);
            i++;
        }
    }
}
 我本地运行没问题,他老是说我答案错误,输入0说没输出,但是我本地运行时有输出的
                                                                                    
发表于 2019-05-01 17:39:52 回复(0)
 import java.util.Scanner;
public class Main{
 public static void main(String[] args) {
  Scanner in=new Scanner(System.in);
  String s=in.nextLine();
  int []nn=new int[10];
  for(int i=0;i<s.length();i++) {
   switch(s.charAt(i)) {
   case '0':nn[0]++;break;
   case '1':nn[1]++;break;
   case '2':nn[2]++;break;
   case '3':nn[3]++;break;
   case '4':nn[4]++;break;
   case '5':nn[5]++;break;
   case '6':nn[6]++;break;
   case '7':nn[7]++;break;
   case '8':nn[8]++;break;
   case '9':nn[9]++;break;
   }
  }
  for(int i=0;i<10;i++) {
   if(nn[i]!=0) {
    System.out.println(i+":"+nn[i]);
   }
  }
 }
}
发表于 2019-03-11 21:11:19 回复(0)
排序后挨着数,用一个游标指向当前所判断的字符,同时游标也要作为for循环的跳出条件,i 永远指向上一个游标;
import java.util.Arrays;
import java.util.Scanner;

public class Num_statistics {
public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    String s = sc.nextLine();
    char[] arr = s.toCharArray();
    Arrays.sort(arr);
    int flag;
    int cur=0;
    char c;
    for(int i=0;i<arr.length;) {
        c = arr[i];
        
        while(c==arr[cur]) {
            cur++;
            if(cur==arr.length)
                break;
        }
        System.out.println(c+":"+(cur-i));
        i=cur;
    }
}

}

发表于 2018-08-30 00:14:02 回复(0)
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String n = sc.next();

        
        for( int i = 0; i < 10;i++) {
            int num = 0;
            for(int j = 0 ; j < n.length() ; j++) {
                int a  = (int)n.charAt(j) - '0' ;
            
                if(a == i) {
                    num ++;
                }
                
            }
            
            if(num > 0) {
                System.out.println(i + ":" + num);
            }
        }
        sc.close();
    }
}

发表于 2018-03-15 17:28:30 回复(0)
import java.util.Scanner;

public class Main {     @SuppressWarnings("resource")     public static void main(String[] args) {         Scanner in = new Scanner(System.in);         int[] numArray = new int[10];// 先建立一个大小为10的数组,因为只有10个数字         String string = in.next();// 得到输入的字符串         for (int i = 0; i < string.length(); i++) {             numArray[string.charAt(i) - '0']++;// 这一步很关键,统计每个字符出现的次数,用作字母也可以,         }         for (int i = 0; i < numArray.length; i++) {             if (numArray[i] != 0) {                 System.out.println(i + ":" + numArray[i]);             }         }     }
}

发表于 2017-09-21 22:17:10 回复(0)
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String a = in.nextLine();
        int[] num = {0,0,0,0,0,0,0,0,0,0};
        for (int i = 0;i < a.length();i++){
            num[(int)(a.charAt(i) - '0')]++;
        }
        for (int i = 0;i < 10;i++){
            if (num[i] != 0)
                System.out.println(i + ":" + num[i]);
        }
    }
}
发表于 2017-08-25 12:05:25 回复(0)
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;
import java.util.TreeMap;
public class Main{
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		char [] arr= sc.nextLine().toCharArray();
		Map <Character,Integer> number = new TreeMap<>();
		for (char c : arr) {
			if(number.containsKey(c)){
				number.put(c, number.get(c)+1);
			}else{
				number.put(c, 1);
			}
		}
		Iterator<Entry<Character, Integer>> it = number.entrySet().iterator();
		Entry<Character, Integer> en;
		while(it.hasNext()){
			en = it.next();
			System.out.println(en.getKey()+":"+en.getValue());
		}
	}

}


发表于 2017-08-14 21:45:30 回复(0)

import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.TreeMap;
public class Main{
public static void main(String[] args)
{
Scanner scanner =new Scanner(System.in);
while (scanner.hasNext()) {
String t=scanner.next();
jiShu(t); 
}
}
private static void jiShu(String t) {
// TreeMap默认情况是按升序排序
Map<Character, Integer> map=new TreeMap<Character,Integer>();
int n=t.length();
for (int i = 0; i <n; i++) {
if (!map.containsKey(t.charAt(i))) 
map.put(t.charAt(i), 1);
else 
map.put(t.charAt(i), map.get(t.charAt(i))+1);
}
for (Character c:map.keySet()) {
System.out.println(c+":"+map.get(c));
}
}

}

发表于 2017-05-07 20:01:31 回复(0)

问题信息

难度:
17条回答 23971浏览

热门推荐

通过挑战的用户

个位数统计 (15)