zoukankan      html  css  js  c++  java
  • (算法)判断字符串中是否包含HelloWorld

    题目:

    给定某字符串,判断该字符串中是否包含HelloWorld,出现HelloWorld不一定要连续,但顺序不变,如“HeByello,ByeWorByeld”就包含“HelloWorld”。

    思路:

    通过i,j来遍历两个字符串str1,str2(HelloWorld),假设长度分别为m,n;

    当i>m或者j>n,则不包含;

    当i<m且j==n-1,且str1[i]==str2[j],则包含;

    当i<m且j<n,如果str1[i]==str2[j],i++,j++;否则,i++;

    可以通过递归来实现,也可以通过循环来实现,详见代码。

    代码:

    #include<iostream>
    
    using namespace std;
    
    void IsHelloWorld(string word1,string word2,int i,int j,bool &flag){
        int m=word1.size();
        int n=word2.size();
    
        if(i>=m || j>=n)
            return;
        
        if(j==n-1){
            if(word1[i]==word2[j])
                flag=true;
        } 
    
        else if(word1[i]==word2[j])
            IsHelloWorld(word1,word2,i+1,j+1,flag);
            
        else 
            IsHelloWorld(word1,word2,i+1,j,flag);
    }
    
    
    bool IsHelloWorld_Recursive(string word1,string word2){
        int m=word1.size();
        int n=word2.size();
        if(m<n)
            return false;
        
        bool flag=false;
        IsHelloWorld(word1,word2,0,0,flag);
    
        return flag;
    }
    
    bool IsHelloWorld(string word1,string word2){
        int m=word1.size();
        int n=word2.size();
    
        int i=0;int j=0;
        while(i<m && j<n){
            if(j==n-1){
                if(word1[i]==word2[j])
                    return true;
            }
            else if(word1[i]==word2[j]){
                i++;
                j++;
            }
            else
                i++;
        }
        return false;
    }
    
    int main(){
        string word1="HeMylloHelloNameWorIsldHAHA";
        string word2="HelloWorld";
    
        cout<< IsHelloWorld_Recursive(word1,word2) <<endl;
        cout<< IsHelloWorld(word1,word2) <<endl;
    
        return 0;
    }
  • 相关阅读:
    如何用StatSVN统计SVN服务器某项目的代码量
    探秘JVM的底层奥秘
    SpingMVC流程图
    NioCopy文件
    我的angularjs源码学习之旅3——脏检测与数据双向绑定
    我的angularjs源码学习之旅2——依赖注入
    我的angularjs源码学习之旅1——初识angularjs
    IE兼容性问题汇总【持续更新中】
    nodejs学习笔记四——express-session
    我理解的this
  • 原文地址:https://www.cnblogs.com/AndyJee/p/4789994.html
Copyright © 2011-2022 走看看