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;
    }
  • 相关阅读:
    使用go-fuse开发一个fuse 文件系统
    awesome-fuse-fs
    jdk 容器运行环境指定时区
    几个不错的golang工具包
    golang 一些不错的log 包
    mysql_fdw 集成go-mysql-server 开发的mysql server
    一些不错的golang web 框架
    golang gomail+fasttemplate+mailhog 发送邮件
    golang go-simple-mail+fasttemplate+mailhog 发送邮件
    实现一个简单的golang db driver
  • 原文地址:https://www.cnblogs.com/AndyJee/p/4789994.html
Copyright © 2011-2022 走看看