c#語言 如何快速的判斷兩個(gè)string中是否含有相同的字符?
如何快速的判斷兩個(gè)string中是否含有相同的字符?可以用兩個(gè)for循環(huán),時(shí)間復(fù)雜度O(n2),太慢。借助邏輯運(yùn)算,用二進(jìn)制表示兩個(gè)字符串是否含有某個(gè)字符,然后進(jìn)行并操作:做法1:只能判斷含有的字符是
如何快速的判斷兩個(gè)string中是否含有相同的字符?
可以用兩個(gè)for循環(huán),時(shí)間復(fù)雜度O(n2),太慢。借助邏輯運(yùn)算,用二進(jìn)制表示兩個(gè)字符串是否含有某個(gè)字符,然后進(jìn)行并操作:做法1:只能判斷含有的字符是否相同,不能判斷出現(xiàn)次數(shù)相同。strings1,s2vector<int>mask(2)for(charc:s1)mask[0]|=1<<c-"a"for(charc:s2)mask[1]|=1<<c-"a"returnmask[0]&mask[1]做法2:能判斷每個(gè)字符出現(xiàn)的次數(shù)都要確保一樣:vector<int>count(26,0)for(inti=0i<s1size()i ){count[s1[i]-"a"] count[s2[i]-"a"]--}for(inti=0i<26i )if(count[i]!=0)returnfalsereturntrue