字串處理

2021-09-24 01:40:02 字數 1233 閱讀 7966

最開始看到這題的時候,從題目裡給的樣例就認為是把原串拆成n個最長的非遞減序列,後來發現並不是這樣,因為題目所要求的是將其拆分為最少的部分,並且所有部分都是滿足在不同表示順序中具有最小的字典序,和我的想法有那麼些不同。

舉個栗子:對於01101111這個串,按題目要求拆開所得的串就只有01101111,而按我自己的理解,就會拆成011和01111;這是兩個的不同之處。

所以就只能按最大長度的最小表示法的方法做,上**:

/*舉個栗子:對於01101111這個串,按題目要求拆開所得的串

就只有01101111,而按我自己的理解,就會拆成011和01111;

這是兩個的不同之處。

所以就只能按最大長度的最小表示法的方法做,上**:*/

#include using namespace std;

const int maxn=2001;

int t;

string str;

bool judge(string s)

}if(min(i,j)==0)

return 1;

else

return 0;

}//檢測是否為最小表示

不難看出子串行長度越大,代價越小,那麼我們自然想到每次肯定是把長度大的先統計掉,這就有點像bfs時每次都處理同乙個深度的節點。

然後我們就可以腦洞大開模擬到bfs上去。以原始序列作為根節點,每個節點都指向其刪除任意乙個字元後所得到的子串行。按子串行長度擴充套件bfs,最後在搜尋到第k個節點時輸出答案就行了~

#includeusing namespace std;

typedef long long ll;

const ll maxn=500010;

const ll inf=2147483647;

ll n,k,ans;

string a,cur,icur;

queueq;

sets;

int main()

if(s.size()==k)}}

if(s.size()

return 0;

}

字串處理 字串反轉

請原諒博主今天很閒,於是乎博主又開始更新微博了。這次要更新的問題是 編寫乙個函式,反轉乙個單詞的順序。例如 do or do not,there is no try.就要反轉成 try.no is there not,do or do 大家要認真看看這道題,這道題和大家想象的貌似有點不同。首先字串反...

字串處理

uncode與ansi字串轉換 我們使用windows函式multibytetowidechar將多位元組字串轉換成寬字元字串。函式如下 int multibytetowidechar uintcodepage dworddwflags lpcstrlpmultibytestr intcbmulti...

字串處理

byte array new byte 2 array system.text.encoding.default.getbytes 啊 int i1 short array 0 0 int i2 short array 1 0 unicode解碼方式下的漢字碼 array system.text.e...