蓝桥杯 出现次数最多的 数字串统计 错误

问题描述

蓝桥杯 出现次数最多的 数字串统计 错误

直接上代码,出现次数最多的数,提交显示 运行错误

字串统计,提交直接显示错误。

public class Main

public static void main(String[] args)
{
    java.util.Scanner cin = new java.util.Scanner(System.in);
    int   n     = cin.nextInt();
    int[] array = new int[n];
    int[] count = new int[n];
    boolean flag = false;
    int   index = 0;
    int   num   = 0;
    for(int i = 0;i<n;i++)
    {
        flag = false;

        num = cin.nextInt();

        for(int j = 0;j<i;j++)
        {
            if(num == array[j])
            {
                flag = true;
                count[j]++;
                break;
            }
        }
        if(!flag)
        {
            array[index++] = num;
        }
    }

    int max = 0;
    for(int i = 1;i<index;i++)
    {
        if(count[i]>count[max])
            max = i;
    }
    System.out.print(array[max]);

}

}

字串统计的

public class Main
{
public static void main(String[] args)
{
java.util.Scanner cin = new java.util.Scanner(System.in);
int L = cin.nextInt();
String s = cin.next();
String temp = "";
int first = 0;
int last = first + L;
int length = s.length();

    java.util.Map<String,Integer>  map = new  java.util.TreeMap<String,Integer>();

    while(length>=L)
    {
        first = 0;
        last = length;
        while(last<=s.length())
        {
            temp = s.substring(first,last);
            if(map.containsKey(temp))
            {
                Integer tempCount = map.get(temp);
                tempCount++;
                map.put(temp,tempCount);
            }
            else
                map.put(temp,1);
            first++;
            last++;
        }
        length--;
    }

    java.util.Collection<Integer> setmap = map.values();
    java.util.Set<String> setstr = map.keySet();

    java.util.Iterator it = setmap.iterator();
    java.util.Iterator its = setstr.iterator();

    int max = (int)it.next();
    String str = its.next().toString();
    String tempstr = str;
    int tempMax = max;

    while(it.hasNext())
    {
        tempMax = (int)it.next();
        tempstr = its.next().toString();
        if(tempMax>max)
        {
            max = tempMax;
            str = tempstr;
        }

    }
    System.out.println(str);

}

}

纠结啊,本机运行都没错,提交就是不对,全是80分,不知道哪错

解决方案

简单看了下你的代码,没有使用合理的算法,都是用的穷举,在线程序会用比较复杂的测试用例,算法不合理运行会超过时间和内存限制而不通过。你还需要完善下你的程序。

时间: 2024-08-07 04:00:22

蓝桥杯 出现次数最多的 数字串统计 错误的相关文章

找出数组中出现次数最多的数字

package cc; //找出数组{ 3, 4, 1, 5, 3, 1, 4, 5, 4, 3 }中出现次数最多的数字 //1 建立一个新数组,长度与原数组一致,然后将每个数字出现的次数存入此数组 //2 找出此数组中的最大值,尤其关注的是此最大值的下标 public class ArrayCount { public static void main(String[] args) { int test[] = new int[] { 1, 2, 3, 2, 3, 3 }; Arr arr =

2011 蓝桥杯【初赛试题】反转串

反转串 我们把"cba"称为"abc"的反转串. 下面的代码可以把buf中的字符反转.其中n表示buf中待反转的串的长度.请补充缺少的代码. void reverse_str(char* buf, int n) { if(n<2) return; char tmp = buf[0]; buf[0] = buf[n-1]; buf[n-1] = tmp; return reverse_str(buf+1, int n-2); //递归,reverse_str每一

js判断字符串中出现次数最多的字符 并统计出现次数

例子  代码如下 复制代码 var str = "abcdefgaaaaaaddda"; var obj = {}; var arr = []; var letter; for(var i = 0,len = str.length;i<len;i++){ letter = str[i]; if(!obj[letter]){ obj[letter] = 1; }else{ obj[letter]++; } } var max_key,max_num=0; for(key in ob

输出array中出现次数最多的数

问题描述 输出array中出现次数最多的数 用类似这种的方法 不用Map int[] a = new int[10]{1,2,3,4,5,6,7,7,7,7}; public int getPopularElement(int[] a) { int count = 1, tempCount; int popular = a[0]; int temp = 0; for (int i = 0; i < (a.length - 1); i++) { temp = a[i]; tempCount = 0

十个整数-输入10个整数,求出其中互不相同的数的个数,哪一个数的出现次数最多,共出现了多少次,急

问题描述 输入10个整数,求出其中互不相同的数的个数,哪一个数的出现次数最多,共出现了多少次,急 输入10个整数,求出其中互不相同的数的个数,哪一个数的出现次数最多,共出现了多少次,急. 解决方案 #include <stdio.h> #define MAX 11 /*输入MAX-1个整型数字,找出不同数字的个数,并且给出出现次数最多的数字.*/ int *sel_sort(int n , int *a,int seq)/*选择排序 seq:0为由小到大,1为由大到小*/ { int i=0,

2013第四届蓝桥杯 C/C++本科A组 真题答案解析【交流帖】

今年的蓝桥杯又已经结束了,做的还是不怎么样,很多题目不难但就是算不出最终的结果,很是纠结,看来路还很长,另外昨天(2013-5-7)也受到了也受到了微软的thank you letter了,哎,都是苦逼的一天.不说了,直接看题吧,如果你对我的做法有异议或者有更好的解法,请给我留言,我会及时更新~~~~~ 1.高斯日记  大数学家高斯有个好习惯:无论如何都要记日记. 他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210 后来人们知道,那个整数就是日期,它表示那一天是高斯

一个数字串到另一个数字串的最小改动实现

问题描述 如何判断一串数字修改后的位数不超过3个?就是我现在要写一个方法去判断一串数字最多只能修改3个数字,怎么实现?例如:有一个数字串7777777,修改后为:77777770000,新增了4个数字超过了3个,怎么去判断?如7777777修改后-->7777778-->允许如7777777修改后-->7777788-->允许如7777777修改后-->8777778-->允许如7777777修改后-->8887778-->不允许,修改字数超过3个如7777

在SQL数据库中得到重复次数最多的记录

数据|数据库|重复  接着昨天没有写完的那个无重复的随即数字的程序,我们展开来讲!既然做这个程序的的目的是为了对买彩票的程序作准备!所以我要把 每次 的结果保存到SQL server 数据库中!我的想法是首先运行100万次摇奖的程序后,将这100万条数据存放到数据库中,然后用SQL语句选择出重复次数最多的一组数据,这个就是我的想法!大家仅仅是参考,千万不要模仿呀:)前面我们已经说过如何生成不重复的随即数,我们就利用那个函数来生成一组数据,如此重复100万次!经过3个小时的运算以后,我们得到了一组

如何在SQL数据库中得到重复次数最多的记录

数据|数据库|重复 接着昨天没有写完的那个无重复的随即数字的程序,我们展开来讲!既然做这个程序的的目的是为了对买彩票的程序作准备!所以我要把 每次 的结果保存到SQL server 数据库中!我的想法是首先运行100万次摇奖的程序后,将这100万条数据存放到数据库中,然后用SQL语句选择出重复次数最多的一组数据,这个就是我的想法!大家仅仅是参考,千万不要模仿呀:)前面我们已经说国如何生成不重复的随即数,我们就利用那个函数来生成一组数据,如此重复100万次!经过3个小时的运算以后,我们得到了一组巨