大意: 給定字串$s1,s2$, 對於$s1$中所有與$s2$相等的子串行$t$, $t$在$s1$中的下標定義為好位置. 求$s1$是否所有位置都是好位置.
顯然$s1$的字首要與$s2$相等, 並且$s2$字尾連續相等的字元要與$s1$的字尾相等, 然後再判斷下中間字元是否合法.
#include #include #include #include #include #include #include #include #include #include #include #define rep(i,a,n) for(int i=a;i<=n;++i)#define per(i,a,n) for(int i=n;i>=a;--i)
#define hr putchar(10)
#define pb push_back
#define lc (o<<1)
#define rc (lc|1)
#define mid ((l+r)>>1)
#define ls lc,l,mid
#define rs rc,mid+1,r
#define x first
#define y second
#define io std::ios::sync_with_stdio(false)
#define endl '\n'
#define db(a) (
ll qpow(ll a,ll n)
ll inv(ll x)
inline int rd()
//head
const int n = 1e6+10;
int n, m, nxt[n][26], f[26];
char s1[n], s2[n];
int main()
int x = s2[m];
per(i,1,m)
rep(i,0,25) nxt[n+1][i]=nxt[n+2][i]=n+1;
per(i,1,n)
rep(i,m+1,n) if (s1[i]!=s2[m])
puts("yes");
}
刷題筆記 牛客字串專項練習5
題目 設棧的初始狀態為空,當字串行a3 作為棧的輸入時,輸出長度為3的且可以用作c語言識別符號的字串序列有 個。a.4 b.6 c.3 d.5答案 c 知識點 棧和識別符號 解析 棧的順序是先進後出 對於字串行為a3 有以下5種情況 1 a入棧,再出棧,然後3入棧,再出棧,入棧,再出棧,輸出0序列是...
牛客字串KMP訓練題 可愛即正義
一開始的時候怎麼也想不明白,根本就不知道時間複雜度怎麼優化,後來在左神左學長的指點下,發現了字串的模式串是給定的,並且其無法在其本身上找到一段與其本身匹配的地方,也就是說,沒有辦法在母串上找到多個相互交錯的模式串 接下來就簡單了,分別討論母串上找到的模式串有times個的情況 當times 2時,無...
牛客網 程式設計題練習 字串陣列相關
day 01 第一題 題目 在字串中查詢第一次出現且只出現一次的字元。如輸入 asdfgfdsa 則輸出 g 演算法解析 演算法1 從頭到尾開始掃瞄這個字串。當訪問到某個字元時,一次和後面的字元比較。如果後面字元沒有與該字元相同的字元,就說明這個字元是第一次出現的字元。如果字串有n個字元,每個字元可...