思路:这道题用HashMap来保存枚举的字串,key值保存字串-value值保存字串所出现的次数;
         通过for循环并使用subString()方法枚举所有符合要求的子串maxStr记录出现次数最多的字串,
          maxValue记录其出现的次数

                1截取到的长度大于等于l的子串先比较是否已经存在map里,
1.1若存在,取出它的次数并+1。和最大次数比较
1.1.1若大于最大次数,将这个次数赋给最大次数,并且将子串赋给最大次数的子串
1.1.2若等于最大次数,再判断这两个子串哪一个的长度大,长度大的为记录的那个最大次数子串
1.2将处理好的子串和次数,存进map里
1.3若不存在,则将新串和0存进map里
 import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class _87子串统计 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in) ;
int l= scanner.nextInt();
String s = scanner.next();
//String 保存子串,int保存次数
Map<String, Integer> map = new HashMap<String,Integer>();
int maxValue = 0;//最大次数
String maxStr = "";//出现最大次数的子串
for (int i = 0; i < s.length()-l+1; i++) {
for (int j = i+l; j < s.length(); j++) {
String string = s.substring(i, j);//枚举截取长度大于等于l的字符串
         if (map.containsKey(string)) {//若该字符串之前出现过则map(key,value)中value值+1
int value = map.get(string);
value++;
if (value>maxValue) {
maxValue = value;
maxStr = string;
}else if(value == maxValue){
if (maxStr.length() < string.length()) { //若该字符串出现的次数与当前出现次数最多的字符串相等,则比较两个字符串的长度,取字符串长的
maxStr = string;
}
}
map.put(string, value);
}else{//若该字符串之前并未出现过则添加,并初始化value值为0
map.put(string, 0);
}
}
}
System.out.println(maxStr);
}
}

java 蓝桥杯算法提高 字串统计的更多相关文章

  1. Java实现 蓝桥杯 算法训练 字串统计

    算法训练 字串统计 时间限制:1.0s 内存限制:512.0MB 问题描述 给定一个长度为n的字符串S,还有一个数字L,统计长度大于等于L的出现次数最多的子串(不同的出现可以相交),如果有多个,输出最 ...

  2. Java蓝桥杯 算法提高 九宫格

    算法提高 9-1九宫格 时间限制:1.0s 内存限制:256.0MB 提交此题 问题描述 九宫格.输入1-9这9个数字的一种任意排序,构成3*3二维数组.如果每行.每列以及对角线之和都相等,打印1.否 ...

  3. java 蓝桥杯算法提高 出现次数最多的整数

    思路:其实这道题不是太难,但是这个题太坑了,提交了好多次都不是100,后来才知道,一定一定要在输入数组数据之前先判断一下输进去的n的范围,一定一定要注意,否则就是跟我下面的图片一样的效果了,泪奔~ 问 ...

  4. java 蓝桥杯算法提高 矩阵乘法

    思路:根据提示的内容,我们可以得到c[i][j] += a[i][k]*b[k][j],k>=0&&k<s PS:这道题本身不难,但是当我定义A[m][s] B[s][n] ...

  5. java 蓝桥杯算法提高 _3K好数

    nums[i][j] 存的是i位数的时候,首位数字是j的K好数的数目,i从1位开始的结果,去算2位时的结果,去算3位时的结果...最后得到l位的结果.K进制只是一个范围. import java.ut ...

  6. java 蓝桥杯算法提高 _1区间k大数查询

    import java.util.Scanner; public class _1区间K大数查询 { public static void main(String[] args) { Scanner ...

  7. java 蓝桥杯算法提高 _2最大最小公倍数

    解题思路: 1. n是奇数,那就最大的三个数相乘2. n是偶数,得分两种情况了, ①如果n不是3的倍数,那就s=n*(n-1)*(n-3)---n与n-2同为偶数,故排除一个n-2: ②n是3的倍数, ...

  8. 蓝桥杯 算法提高 11-1实现strcmp函数 (JAVA方法)

    蓝桥杯 算法提高 11-1实现strcmp函数 (JAVA方法) 首先这不是一个多难的题,但是网上的我没怎么找到有Java的代码,基本全都是c语言的,小编是个小白,如果有不对的地方请联系小编 问题描述 ...

  9. 问题 1936: [蓝桥杯][算法提高VIP]最大乘积

    问题 1936: [蓝桥杯][算法提高VIP]最大乘积 时间限制: 1Sec 内存限制: 128MB 提交: 77 解决: 16 题目描述 对于n个数,从中取出m个数,如何取使得这m个数的乘积最大呢? ...

随机推荐

  1. 《selenium2 python 自动化测试实战》(12)——跳过验证码登录add_cookie

    微信公众号搜索“自动化测试实战”或扫描下方二维码添加关注~~~

  2. 1-3 superset数据模型

    在models.py中大部分的class对应数据库中的表,那么我们就从AuditMixinNullable这个类开始我们的模型解析. AuditMixin:这个类是FAB(Flask  AppBuil ...

  3. STL容器——对map排序

    STL容器(三)——对map排序 对于map的排序问题,主要分为两部分:根据key排序:根据value排序.下面我们就分别说一下~ 1. 根据key进行排序 map默认按照key进行升序排序 ,和输入 ...

  4. (转)win7+iis7.5+asp.net下 CS0016: 未能写入输出文件“c:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files 解决方案

    本文转载自:http://www.cnblogs.com/finesite/archive/2011/01/28/1946940.html 网上搜的解决方案但在我的环境下仍旧没有解决,我的方法如下: ...

  5. (转)Linq DataTable的修改和查询

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...

  6. TMS320CC657基本外围电路调试

    一.本文内容 本文主要包含以下三个基本外围电路的调试过程与调试结果: 电源模块 时钟模块 复位模块 二.电源模块调试 无论对FPGA还是DSP而言,对电源的上电顺序都有一定的要求,且不同型号的器件对电 ...

  7. java web 程序---购物车选商品,购买,付款

    思路:1.有一个单选按钮,让我们选择商品   2.购买的物品及 数量清算 3.付款 我的界面: home.jsp <body> <center> 选择您购买的商品 <br ...

  8. PTA 1004 Counting Leaves (30)(30 分)(dfs或者bfs)

    1004 Counting Leaves (30)(30 分) A family hierarchy is usually presented by a pedigree tree. Your job ...

  9. htm标签的语意

    标签名 英文全拼 标签语意 div division 分割 span span 范围 ol ordered list 排序列表 ul unordered list 不排序列表 li list item ...

  10. 缓存varnish的管理及配置详解

    一 工作原理 在当前主流的Web服务架构体系中,Cache担任着越来越重要的作用.常见的基于浏览器的C/S架构,Web Cache更是节约服务器资源的关键.而最近几年由FreeBSD创始人之一Kamp ...