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

2021-06-27 01:34:45 字數 656 閱讀 9216

網上流傳了乙個故事,說是在google面試的故事,故事中說最後一道面試題就是假設有兩個字串,乙個長一些(字串1),乙個短一些(字串2),如何判斷這個短字串中的每個字元是否都在這個長字串中。假設每個字串都是由26個小寫字母組成的。

最後這個大牛提到了用乙個素數代表乙個字母,把字串1的字母的積(當然會很大)算出來,然後除以字串2的每個字元代表的素數。如果每個字元代表的素數都能被整除,說明字串2中的每個字元都在字串1中。時間複雜度為o(n+m)

這確實是乙個巧妙的方法,不過實現起來卻不是很容易。這裡針對這個特殊的要求,可以用位圖或者hash的思路來解決。

無論是字串1還是字串2,都是由【a-z】字母組成的,所以最多只有26個字母,所以只要乙個整數(32位)就可以表示字串所表示的字母,假設這個字母出現,則對應的位置1,那麼就算26個字母都出現了,也只需要26位置1.則該思路的c++實現**如下:

bool is_contained(const char* str1,const char* str2)

pstr = str2;

bool iscontained = true;

while(*pstr != '\0')

pstr++;

}return iscontained;

}

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

eg str1 admin str2 1234,123admin,xcxx 比較str1是否在str2中 用常用的charindex,返回肯定是有值的,這裡自己動手寫乙個方法 檢查乙個字串是否在另外乙個字串中數,另外乙個字串元素用,隔開 create function dbo checkstrina...

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

方法一 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...

判斷乙個字串是否為另外乙個字串旋轉之後的字串

例如 給定s1 aabcd和s2 bcdaa,返回1 給定s1 abcd和s2 acbd,返回0.aabcd左旋乙個字元得到abcda aabcd右旋乙個字元得到daabc 思路 把aabcd複製兩遍,看結果是否在aabcdaabcd 中 左旋和右旋的結果都在aabcdaabcd 中 include...