zoukankan      html  css  js  c++  java
  • 子串计算

    题目描述

    给出一个01字符串(长度不超过100),求其每一个子串出现的次数。
    输入描述:
    输入包含多行,每行一个字符串。
    输出描述:
    对每个字符串,输出它所有出现次数在1次以上的子串和这个子串出现的次数,输出按字典序排序。

    分析

    1. 使用map<string, int>,键是子串,值是子串出现的次数。
    2. 重点在于找到每一个子串
        for(int i = 1; i <= s.size(); i++){// 
                for(int j = 0; j < i; j++){
                    string_counter[s.substr(j, i - j)]++;// substr(j, i - j), 返回以j为起点,i - j为长度的子串
                }
            }
    

    #include <iostream>
    #include <map>
    #include <string>
    
    using namespace std;
    
    int main(){
        string s;
        while(cin >> s){
            map<string, int> string_counter;
    
            for(int i = 1; i <= s.size(); i++){
                for(int j = 0; j < i; j++){
                    string_counter[s.substr(j, i - j)]++;
                }
            }
    
            for(map<string, int>::iterator it = string_counter.begin(); it != string_counter.end(); it++){
                if(it -> second > 1){
                    cout << it -> first << " " << it -> second << endl;
                }
            }
        }
        return 0;
    }
    
  • 相关阅读:
    Zookeeper 基础知识【1】
    Spark 基础复习【1】
    ZooKeeper 入门 一致性
    Hive 视图 索引
    Yarn调度 历史与基础
    mysql 优化【1】
    TCP IP知识梳理
    Java 基础 锁
    Spark 累加器使用
    RATE-MAX----beta答辩博客
  • 原文地址:https://www.cnblogs.com/zhuobo/p/10311500.html
Copyright © 2011-2022 走看看