(算法)判断字符串中是否包含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;
}
时间: 2024-10-13 20:53:48

(算法)判断字符串中是否包含HelloWorld的相关文章

PHP判断字符串中是否包含指定字符串,支持中文哦

RT,随手写的 1 /** 2 * 判断字符串中是否包含指定字符串 3 * @var source 源字符串 4 * @var target 要判断的是否包含的字符串 5 * @return bool 6 */ 7 function hasstring($source,$target){ 8 preg_match_all("/$target/sim", $source, $strResult, PREG_PATTERN_ORDER); 9 return !empty($strResul

java判断字符串中是否包含汉字

原文:java判断字符串中是否包含汉字 源代码下载地址:http://www.zuidaima.com/share/1550463517428736.htm package com.zuidaima.util; /** *@author www.zuidaima.com **/ public class test { public static void main(String[] args) { String a = "中国China"; for (int i=a.length();

判断字符串中是否包含中文

public bool CheckChinese(string str) { bool flag = false; UnicodeEncoding a = new UnicodeEncoding(); byte[] b = a.GetBytes(str); for(int i=0;i<b.Length;i++) { i++; if (b[i] != 0) { flag = true; } else { flag = false; } } return flag; }这段代码为什么能实现判断是否为

java判断字符串中是否包含字母

1.java代码判断字符串中是否包含字母: 思路:使用正则表达式的来验证 1.1示例代码如下: /** * 该方法主要使用正则表达式来判断字符串中是否包含字母 * @author fenggaopan 2015年7月21日 上午9:49:40 * @param cardNum 待检验的原始卡号 * @return 返回是否包含 */ public boolean judgeContainsStr(String cardNum) { String regex=".*[a-zA-Z]+.*"

Node.js之判断字符串中是否包含某个字符串

server.txt内容如下: 阿里云服务器 关于应用场景,就不多说了,字符串是不论是后端开发还是前端开发等,都是要经常打交道了. test.js(node.js代码,只要被本地装了node.js环境,直接可通过node test.js运行看效果): var fs = require("fs"); var result = fs.readFileSync("./server.txt"); console.log("result:"+result)

用php的strpos() 函数判断字符串中是否包含某字符串的方法

PHP strpos() 函数 strpos() 函数返回字符串在另一个字符串中第一次出现的位置. 如果没有找到该字符串,则返回 false.语法 strpos(string,find,start) 参数 描述string 必需.规定被搜索的字符串.find 必需.规定要查找的字符.start 可选.规定开始搜索的位置. 注释:该函数对大小写敏感.如需进行对大小写不敏感的搜索,请使用 stripos()函数.编辑本段例子 <?php echo strpos(www.idc-gz.com,"

C#判断字符串中是否包含一个子字符串是可以直接使用Contains()方法

1. 以前判断一个字符串中是否包含另一个子字符串时,习惯使用 IndexOf(); string str = "[email protected]"; if(str.IndexOf("@")>=0){ //any other code } 2. 后来发现,原来C#中还定义了Contains()这样的方法,使用如下: String abc = "[email protected]@"; bool result = abc.Contains(&

Delphi判断字符串中是否包含汉字,并返回汉字位置

1,函数代码: { 判断字符串是否包含汉字 // judgeStr:要判断的字符串 //posInt:第一个汉字位置 } function TForm2.IsHaveChinese(judgeStr: string; var posInt: integer): boolean; var p: PWideChar; // 要判断的字符 count: integer; // 包含汉字位置 isHave: boolean; // 是否包含汉字返回值 begin isHave := false; //

判断字符串中是否包含汉字,并返回汉字位置

{ 判断字符串是否包含汉字// judgeStr:要判断的字符串//posInt:第一个汉字位置} function TForm1.IsHaveChinese(judgeStr: string; var posInt: integer): boolean;var p: PWideChar; // 要判断的字符 count: integer; // 包含汉字位置 isHave: boolean; // 是否包含汉字返回值begin isHave := false; // 是否包含汉字返回值默认为f