zoukankan      html  css  js  c++  java
  • java 蓝桥杯算法提高 字串统计

    思路:这道题用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里
     1 import java.util.HashMap;
     2 import java.util.Map;
     3 import java.util.Scanner;
     4 public class _87子串统计 {
     5     public static void main(String[] args) {
     6         Scanner scanner = new Scanner(System.in) ;
     7         int l= scanner.nextInt();
     8         String s = scanner.next();
     9         //String 保存子串,int保存次数
    10         Map<String, Integer> map = new HashMap<String,Integer>();
    11         int maxValue = 0;//最大次数
    12         String maxStr = "";//出现最大次数的子串
    13         for (int i = 0; i < s.length()-l+1; i++) {
    14             for (int j = i+l; j < s.length(); j++) {
    15                 String string = s.substring(i, j);//枚举截取长度大于等于l的字符串
    16           if (map.containsKey(string)) {//若该字符串之前出现过则map(key,value)中value值+1
    23                     int value = map.get(string);
    24                     value++;
    25                     if (value>maxValue) {
    26                         maxValue = value;
    27                         maxStr = string;
    28                     }else if(value == maxValue){
    29                         if (maxStr.length() < string.length()) { //若该字符串出现的次数与当前出现次数最多的字符串相等,则比较两个字符串的长度,取字符串长的
    30                             maxStr = string;
    31                         }
    32                     }
    33                     map.put(string, value);
    34                 }else{//若该字符串之前并未出现过则添加,并初始化value值为0
    35                     map.put(string, 0);
    36                 }
    37             }
    38         }
    39         System.out.println(maxStr);
    40     }
    41 }
  • 相关阅读:
    numpy之数组属性与方法
    numpy之数组创建
    matplotlib之直方图
    matplotlib之条形图
    matplotlib之散点图
    matplotlib之折线图
    Kettle使用教程之数据同步
    Kettle使用教程之Job使用
    Kettle使用教程之安装与资源库的创建
    Ubuntu16.04配置单机版Zookeeper和Kafka
  • 原文地址:https://www.cnblogs.com/zhangxue521/p/6665440.html
Copyright © 2011-2022 走看看