173 如何迅速匹配兄弟字串

2021-06-27 05:05:16 字數 776 閱讀 3905

3.  如果兩個字串的字元一樣,但是順序不一樣,被認為是兄弟字串,問如何在迅速匹

配兄弟字串(如,bad和adb就是兄弟字串)。思路:判斷各自素數乘積是否相等。

1、判斷兩個字串的長度是否一樣。

2、每個字串按字元排序,如acb排序之後是abc,如果是兄弟字串的話,排序之後是一樣的。

給26個字元依次賦予質數。質數是比較特殊的一堆數字,它們只能被1和本身整除。

給a賦值2、給b賦值3、給c賦值5、給d賦值7、給e賦值11、給f賦值13 等等……

加法:兩個字串中的所有字元都賦值了,接著讓它們各自相加,如果兩個字串得出的結果是一樣的,那它們是兄弟字串。

但是,b+f=3+13=16;c+e=5+11=16,所以有誤;

乘法:兩個字串中的所有字元讓它們各自相乘,方法是對的,但是會溢位,所以要大整數處理了;

用平方和或者立方和:考慮平方和會不會解決加法有誤,乘法溢位:b*b+f*f=3*3+13*13=178;c*c+e*e=5*5+11*11=146; 

用hashmap可以,以字母為key,出現的次數為value,次數一樣即為相同的; 

程式實現乙個方法三:hash吧 

#include#include#include#includeusing namespace std;

int main()

//字元是否相同

memset(hash1,0,sizeof(hash1));

memset(hash2,0,sizeof(hash2));

for(i=0;i

怎樣迅速匹配兄弟字串

假設兩個字串的字元一樣,可是順序不一樣,被覺得是兄弟字串。問怎樣在迅速匹配兄弟字串 如,bad和adb就是兄弟字串 思路 推斷各自素數乘積是否相等。方法一 1 推斷兩個字串的長度是否一樣。2 每乙個字串按字元排序。如acb排序之後是abc,假設是兄弟字串的話,排序之後是一樣的。方法二 給26個字元依...

字串匹配

題目描述 讀入資料string 然後讀入乙個短字串。要求查詢string 中和短字串的所有匹配,輸出行號 匹配字串。匹配時不區分大小寫,並且可以有乙個用中括號表示的模式匹配。如 aa 123 bb 就是說aa1bb aa2bb aa3bb都算匹配。輸入 輸入有多組資料。每組資料第一行輸入n 1 n ...

字串匹配

time limit 1000ms memory limit 65536k 給定兩個字串string1和string2,判斷string2是否為string1的子串。輸入包含多組資料,每組測試資料報含兩行,第一行代表string1,第二行代表string2,string1和string2中保證不出現...