zoukankan      html  css  js  c++  java
  • 考研机试 68.子串计算

    时间:2021/03/09

    一.题目描述

    给出一个01字符串(长度不超过100),求其每一个子串出现的次数。

    输入描述

    输入包含多行,每行一个字符串。

    输出描述

    对每个字符串,输出它所有出现次数在1次以上的子串和这个子串出现的次数,输出按字典序排序。

    题目链接

    https://www.nowcoder.com/practice/bcad754c91a54994be31a239996e7c11?

    tpId=40&tqId=21399&rp=1&ru=%2Fta%2Fkaoyan&qru=%2Fta%2Fkaoyan%2Fquestion-ranking&tab=answerKey

    二.算法

    题解

    这里采用的是暴力搜索的方法,通过HashMap存放子串及出现的次数,然后用ArrayList存放出现次数超过一次的子串,使用Collections类的sort方法进行字典序排序,最后遍历输出结果。

    代码

    import java.util.Scanner;
    import java.util.HashMap;
    import java.util.ArrayList;
    import java.util.Collections;
    
    public class Main{
        
        public static void main(String[] args){
            //读取输入
            Scanner in = new Scanner(System.in);
            while(in.hasNext()){
                String str = in.next();
                //求子串及出现次数
                HashMap<String, Integer> map = new HashMap<>();
                for(int i = 0; i < str.length(); i++){
                    for(int j = i; j < str.length(); j++){
                        String temp = str.substring(i, j + 1);
                        if(map.containsKey(temp)){
                            int count = map.get(temp);
                            map.put(temp, count + 1);
                        }else{
                            map.put(temp, 1);
                        }
                    }
                }
                //输出子串及出现次数(出现一次以上的)
                ArrayList<String> list = new ArrayList<>();
                int size = map.size();
                for(String s : map.keySet()){
                    if(map.get(s) > 1){
                        list.add(s);
                    }
                }
                Collections.sort(list);    //按字典序进行排序
                for(String s : list){
                    System.out.println(s + " " + map.get(s));
                }
            }
        }
    }
    努力,向上,自律
  • 相关阅读:
    JavaScript if 条件语句
    JavaScript while 循环
    JavaScript for 循环
    JavaScript 字典
    JavaScript 数组
    JavaScript 函数
    JavaScript 定时器
    JavaScript 字符串操作
    CEF js调用C#封装类含注释
    多网卡的环境下的发包
  • 原文地址:https://www.cnblogs.com/machi12/p/14504292.html
Copyright © 2011-2022 走看看