LeetCode 求拆分字串所得最大個數

2021-10-10 13:34:40 字數 1401 閱讀 5089

/*

給你乙個字串s,請你拆分該字串,並返回拆分後唯一子字串的最大數目.字串s拆分

後可以得到若干 非空子字串,這些子字串連線後應當能夠還原為原字串.但是拆分出來

的每個子字串都必須是唯一的.

注意:子字串是字串中的乙個連續字串行.

示例 1:

input:s="ababccc"

output:5

解釋:一種最大拆分方法為['a','b','ab','c','cc'].像['a','b','a','b','c','cc']

這樣拆分不滿足題目要求,因為其中的'a'和'b'都出現了不止一次.

示例 2:

input:s="aba"

output:2

解釋:一種最大拆分方法為['a','ba']

示例 3:

input:s="aa"

output:1

解釋:無法進一步拆分字串.

(1)1<=s.length<=16

(2)s僅包含小寫英文本母

解題思路:

對於長度為n的字串,有n−1個拆分點.從左到右遍歷字串,對於每個拆分點,如果在

此拆分之後,新得到的乙個非空子字串,即拆分點左側的最後乙個被拆分出的非空子字

符串,與之前拆分出的非空子字串都不相同,則當前的拆分點可以進行拆分,然後繼續

對剩下的部分(即拆分點右側的部分)進行拆分.

(1)回溯(深度優先遍歷);

(2)使用乙個雜湊驗證是否已有重複子串,這裡使用set容器,insert的返回值是pair對,第乙個

是當前的迭代器,第二個是bool型別;

(3)判斷剩餘字元長度和已有答案,進行剪枝;

*/

go語言實現

package main

import "fmt"

func maxuniquesplit(s string) int

count:=0

var dfs func(string)

dfs=func (s string)

return y

}func main()

c++語言實現

#include #include #include #include using namespace std;

class solution

void dfs(string& s,int x,int n)

if(flag)

count=max(count,(int)words.size());

}else;

int main(int argc,char* ar**)

拆分字串

拆分乙個字串,獲取每一組的key與value。如字串 qq adf f qewr98 eer d9adf t ad34 f qewrqr u adf43 gggg 2344 按照物件導向理念來解決,建立乙個物件 這個是對物件物件,有key和value兩個特性。我們需要把拆分好的資料臨時儲存起來,現在...

拆分字串

本函式可以將 目標字串 以 指定字串 進行拆分,並通過表結構返回結果。如下 create or replace type str split is table of varchar2 4000 create or replace function splitstr p string in varch...

拆分字串

拆分乙個字串,獲取每一組的key與value。如字串 qq adf f qewr98 eer d9adf t ad34 f qewrqr u adf43 gggg 2344 按照物件導向理念來解決,建立乙個物件 這個是對物件物件,有key和value兩個特性。我們需要把拆分好的資料臨時儲存起來,現在...