給你乙個字串ss 和乙個數 kk ,現在如果小 bb 任意選出 kk 個字元刪去,然後將得到的字串給你,請問你是否一定能確定刪去的所有字元在原串中的位置。
若一定,輸出 certain ,否則輸出 uncertain 。
1≤k≤|s|≤1001≤k≤|s|≤100 ,ss 僅包含小寫字母。
樣例說明:
例如如果小 bb 刪去 s,es,e ,則她告訴你 "nuk" ,那麼你可以確定刪去的是原串的第 11
個字元和第 55 個字元。無論小 bb 刪去哪兩個字元,你都一定可以確定其在原串的位置。
收起
第一行乙個字串表示 s 。第二行乙個正整數表示 k 。
一行乙個字串。若一定,輸出 certain ,否則輸出 uncertain 。
snuke2
certain
本題,先把題意理清楚,給乙個字串和k,問隨意給出乙個刪去k個字元的串能否確定出#include#include#include#include#include#include#define ll long long刪後的串中每個字元原來的位置,並不要求確定刪去的每個字元的位置(從刪去的角度來讀題
只要知道哪些位置被刪掉就行了,無需一一對應),例如 abca,2的答案是「yes」。
很多人的做法,判斷原串中是不是有出現次數》=2的字母,另外對k==len的情況特判。
實際上這樣的思路是不對的,還是例子abca,2,顯然答案是「yes」。
正解是找相同字母的最小間隔,如果k>=該間隔,則無法確定,否則可以確定,當然同樣要對
k==len的情況特判,具體為什麼理解的還不是很透徹。
#define inf 0x3f3f3f3f
using namespace std;
const int n=2e5+100;
const int m=4e5+100;
int arr[n],pos[n];
int main(){
string str;
int k,len,mini;
while(cin>>str>>k){
mini=inf;
memset(pos,0,sizeof(pos));
len=str.length();
for(int i=0;ik||len==k){
cout<<"certain" 在tcp通訊中,資料是一直在發的,為了保證我們需要的命令包是完整的,那麼一定會有命令頭和尾,然後再擷取中心的命令資料處理,留下剩下的字串。string s qwer asdf zxcv int startops s.indexof console.writeline startops int end... input 原字串 find 被替換的子串 replacewith 替換字串 string stringreplace const string input,const string find,const string replacewith return strout 在網上搜尋的時候看到好多人都... 請實現乙個演算法,確定乙個字串的所有字元是否全都不同。這裡我們要求不允許使用額外的儲存結構。給定乙個string inistring,請返回乙個bool值,true代表所有字元全都不同,false代表存在相同的字元。保證字串中的字元為ascii字元。字串的長度小於等於3000。測試樣例 aeiou ...C 擷取指定子字串
替換字串中的指定子串
確定字串互異