判斷乙個字串中的字元是否都在另乙個中出現

2021-06-26 19:39:38 字數 1115 閱讀 6033

假設這有乙個各種字母組成的字串,假設這還有另外乙個字串,而且這個字串裡的字母數相對少一些。從演算法是講,什麼方法能最快的查出所有小字串裡的字母在大字串裡都有?

解答:(1)把其中的每個字母都放入乙個hashtable裡(成本是o(n)或16次操作)。然後輪詢第二個字串,在hashtable裡查詢每個字母,看能否找到。如果找不到,說明沒有匹配成功。

(2) 假設我們有乙個一定個數的字母組成字串 —— 我給每個字母分配乙個素數,從2開始,往後類推。這樣a將會是2,b將會是3,c將會是5,等等。現在我遍歷第乙個字串,把每個字母代表的素數相乘。你最 終會得到乙個很大的整數,對吧?然後 —— 輪詢第二個字串,用每個字母除它。如果除的結果有餘數,這說明有不匹配的字母。如果整個過程中沒有餘數,你應該知道它是第乙個字串恰好的子集了。

(3)共有26個英文本母,如果在字串中該字母出現,就為1,否則為0,則用兩個整型數( int)可以表示 這兩個字串。

假設 int a,b;

c=a|b(按位或) 

d=a^c(按位異或)

如果d為0那麼說明b中的字串在a中都出現,如果d不為1,那麼說明b中有a中未出現的字串。

**如下:

#include 

#include 

int convert(

char *str)

int main(

int argc,

char*argv)

str1=argv[

1];str2=argv[

2];a=convert(str1);

b=convert(str2);

printf(

"a=0x%x  b=0x%x\n

",a,b);

c=a|b;

printf(

"c=0x%x\n

",c);

d=a^c;

printf(

"d=0x%x\n

",d);

d==0?printf(

"%s all in %s\n

",str2,str1):printf(

"%s not all in %s\n

",str2,str1);

return

0; }

判斷乙個字串是否在另乙個字串中

方法一 string str1 nihaoksdoksad string str2 ok int total 0 for string tmp str1 tmp null tmp.length str2.length tmp tmp.substring 1 system.out.println st...

判斷乙個字串是否在另乙個字串中

find in set str,str1 判定str是否在str1中有,如果有,則返回其在str1中的位置,如果沒有,返回0 eg select find in set 13教 瀏陽基地,耕耘基地,文淵館,13教,測試基地,耕耘基地 返回4 這個函式有很大的侷限性,他只能判別是否存在於第二個字串中以...

判斷乙個字串的所有字元是否都在另乙個字串中

網上流傳了乙個故事,說是在google面試的故事,故事中說最後一道面試題就是假設有兩個字串,乙個長一些 字串1 乙個短一些 字串2 如何判斷這個短字串中的每個字元是否都在這個長字串中。假設每個字串都是由26個小寫字母組成的。最後這個大牛提到了用乙個素數代表乙個字母,把字串1的字母的積 當然會很大 算...