日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > > 充電吧
[導(dǎo)讀]實(shí)現(xiàn)一個(gè)挺高級(jí)的字符匹配算法: 給一串很長(zhǎng)字符串,要求找到符合要求的字符串,例如目的串:123,1******3*****2,12******3這些都要找出來(lái) 其實(shí)就是一些和諧系統(tǒng)。。 與此題類似:給

實(shí)現(xiàn)一個(gè)挺高級(jí)的字符匹配算法:

給一串很長(zhǎng)字符串,要求找到符合要求的字符串,例如目的串:123,1******3*****2,12******3這些都要找出來(lái)

其實(shí)就是一些和諧系統(tǒng)。。

與此題類似:給一個(gè)很長(zhǎng)的字符串str, 還有一個(gè)字符集比如{a,b,c},找出str包含{a,b,c}的最短子串,要求O(n)。

/*
用兩個(gè)變量 front,rear 指向一個(gè)的子串區(qū)間的頭和尾(當(dāng)然,開始時(shí)front和rear都指向字符串開始處)。
用一個(gè)int cnt[255]={0}記錄當(dāng)前這個(gè)子串里字符集a,b,c各自的個(gè)數(shù),一個(gè)變量count記錄字符集里有多少個(gè)了
rear 一直加,更新cnt[]和count的值,直到count等于字符集個(gè)數(shù)
然后front++,直到cnt[]里某個(gè)字符個(gè)數(shù)為0(front 開始的部分有可能和后面的重復(fù),所以front要加到某個(gè)字符個(gè)數(shù)為0),
這樣就找到一個(gè)符合條件的字串了,繼續(xù)下去,可以求出所有符合條件的串,同時(shí)可以求出滿足條件最短子串

*/

#include 
using namespace std;

void MinSubString( char *src, char *des )
{
	int min=1000;//找最短子串
	int minfront=0;//最短子串開始位置
	int minrear=0;//最短子串結(jié)束位置
	int front,rear;
	front=rear=0;
	int len=strlen(des);
	int hashtable[255]={0};
	int cnt[255]={0};
	int cnt2[255]={0};
	for(int i=0; i