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;
    }
  • 相关阅读:
    JDBC编程步奏、问题总结(一)
    基于注解的Spring AOP的配置和使用--转载
    什么是aop?-------转
    The JSP specification requires that an attribute name is preceded by whitespace--异常
    使用注解来构造IoC容器-转
    Java单元测试(Junit+Mock+代码覆盖率)---------转
    Linux 杂项
    Sequence
    vim编辑器高亮sv语法
    linux 权限 chmod 755
  • 原文地址:https://www.cnblogs.com/AndyJee/p/4789994.html
Copyright © 2011-2022 走看看