NBUT 1749 論WC串的唯一性(思維)

https://ac.2333.moe/Problem/view.xhtml?id=1749

wc 在爬塔時遇到了一串神祕字符,隱隱之中有一股力量從中透出 
wc 很快發現了玄機,這個字符串中每一個含有“wc”的連續子序列都能爲wc提供魔法值 
找出字符串能爲wc提供多少魔法值 
注意如果某個連續子序列中有2個或以上“wc”,會導致魔法過剩,其魔法值爲0

Input

第一行,數據組數T(1<=T<=10)  
接下來T行,每行一個字符串s,有小寫英文字母組成  
 1<=|S|<=10^5  

Output

輸出T行  
對於每組數據,輸出只含有一個“wc”作爲連續子序列的個數 

Sample Input

3
wcak
woc
awcawc

Sample Output

3
0
9

Hint

For first sample : wc,wca,wcak 
For third sample: awc,awca,awcaw,wc,wca,wcaw,cawc,awc,wc;

#include<iostream>
#include<algorithm>
using namespace std;

int main()
{
	int T;
	cin >> T;
	while(T--)
	{
		string s;
		cin >> s;
		
		int last = 0;
		int id = s.find("wc");
		long long left = id + 1, right = 1, ans = 0;
		
		while(id != -1)
		{
			last = id + 1;
			id = s.find( "wc",id+2);
			
			if(id == -1) break;
			
			right = id - last + 1;
			
			ans +=  left * right;
			//cout << left << ' ' << right << endl;
			left = right;
		}
		
		if(last != s.length()-1) 
			right = s.length() - last;
		else 
			right = 1;
			
		ans += (long long) left * right;
		
		cout << ans << endl;
	}
	
	return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章