91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

字符串匹配之通配符問題-

發布時間:2020-07-31 23:10:30 來源:網絡 閱讀:654 作者:小止1995 欄目:編程語言

一串長為M的珠子,珠子的顏色有N種(N<10)。求包含N種顏色的最短連續珠串。

//兩個指針,開始的時候都指向某一個位置,移動前一個指針,直到兩個指針直接包含了所有顏色的珠子。

//此時記下len。

//然后向前移動后面的指針,再調整最前面的指針,直到重新滿足兩個指針間包含了所有的顏色,比較此時的len和之前的len,取最小值。

//如此移動,直到后面的指針回到起始位置。

//時間復雜度是O(N),空間復雜度是O(1)

#include<iostream>
using namespace std;
void Search(char* src,char* ch)
{
	int varies = 0;//多少種顏色
	char* begin = src;
	memset(ch, 0, sizeof(char) * 256);
	while (*begin++)
	{
		if (ch[*begin - '0']++ == 0)
		{
			++varies;
		}
	}
	//此時varies存儲共有多少種顏色
	int MinLength = 0;
	int curLength = 0;
	char* prev = src;
	char* cur = src;
	int curVaries = 0;
	char* ret = NULL;
	memset(ch, 0, sizeof(char) * 256);
	while (1)
	{
		curLength = 0;
		curVaries = 0;
		cur = prev;
		memset(ch, 0, sizeof(char) * 256);
		while (curVaries != varies)
		{
			if (++ch[*cur - '0']==1)
			   curVaries++;
			++cur;
			++curLength;
			if (*cur == '\0')
				cur = src;
		}
		if (MinLength == 0 || MinLength > curLength)
		{
			MinLength = curLength;
			ret = prev;
		}
		if (MinLength == varies)
			break;//得到最短的
		++prev;
		if (*prev =='\0')
			break;
	}
	int flag = 1;
	int index = 0;
	for (int i = 0; i < MinLength; ++i)
	{
		if (ret[i] == '\0')
			flag = 0;
		if (flag == 1)
			ch[i] = ret[i];
		else
			ch[i] = src[index++];
	}
	ch[MinLength] = '\0';
}
void Test1()
{
	char* src = "abbcdabcddddacgd";
	char ch[256] = { 0 };
	Search(src,ch);
	cout<<ch<< endl;
}
//所得結果應該是cgdab


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

内江市| 涟源市| 社旗县| 兴隆县| 龙海市| 万年县| 集安市| 拜城县| 阳新县| 长泰县| 高阳县| 广汉市| 通化县| 巴南区| 巨鹿县| 嘉定区| 巴青县| 抚顺县| 云和县| 荣成市| 峨眉山市| 盐城市| 白玉县| 西乌| 天祝| 古蔺县| 太白县| 宜兰市| 崇文区| 朝阳市| 乌恰县| 名山县| 潢川县| 齐齐哈尔市| 营口市| 深州市| 察哈| 瑞金市| 舟曲县| 河南省| 永善县|