zoukankan      html  css  js  c++  java
  • 算法--大小字符串问题

    由于我对字符串问题的理解还不太到位,所以我将字符串问题中从大字符串中寻找小的字符串问题放在这里。以便考试遇到。

    //
    // Created by 陈平 on 2018/7/8.
    //从大字串中寻找小的字串
    
    #include "iostream"
    #include "string.h"
    
    using namespace std;
    char a[1000];
    char b[1000];
    
    //int main(){
    //    gets(a);
    //    gets(b);
    //    int len1 = strlen(a);
    //    int len2 = strlen(b);
    //    int flag = 1;
    //    for (int i = 0; i <=len1-len2 ; ++i) {
    //            flag = 1;
    //        for (int j = 0; j <len2 ; ++j) {
    //            if(a[i+j]!=b[j]){
    //                flag=0;
    //                break;
    //            }
    //
    //        }
    //        if(flag) {cout<<i+1<<endl;break;}
    //    }
    //}
    //上述内容为查找字串第一次出现的位置
    
    int main(){
        gets(a);
        gets(b);
        int len1 = strlen(a);
        int len2 = strlen(b);
        int flag = 1;
        int time = 0;
        for (int i = 0; i <=len1-len2 ; ++i) {
            flag = 1;
            for (int j = 0; j <len2 ; ++j) {
                if(a[i+j]!=b[j]){
                    flag=0;
                    break;
                }
    
            }
            if(flag) {time++;}
        }
        cout<<time;
    }
    //上面为字串出现的次数问题

    上述问题包括两个,第一个(注释掉的)为返回第一次遇到的小字符串的位置。

    第二个问题为:求小字符串在大字符串中出现的次数。

    而我们用了最暴力的循环来做,第一层循环为遍历大数字的所有字符串--这里要注意当遍历字符串时,我们要注意边界要从0~len1-len2。防止其越界。

    之后在大循环中循环小字串,只要不匹配就给flag为0。最后检查flag是否为1,若为1则time++。

  • 相关阅读:
    rsyslog+loganalyzer配置
    Python字符串格式化
    awk
    haproxy配置
    CentOS7服务管理
    Nginx缓存
    父指针 子指针
    矩阵 特征向量
    指针的运算
    const 与指针 的用法
  • 原文地址:https://www.cnblogs.com/Pinging/p/9281246.html
Copyright © 2011-2022 走看看