請實現乙個演算法,確定乙個字串的所有字元是否全都不同。這裡我們要求不允許使用額外的儲存結構。
給定乙個string inistring,請返回乙個bool值,true代表所有字元全都不同,false代表存在相同的字元。保證字串中的字元為ascii字元。字串的長度小於等於3000。
測試樣例:
"aeiou"
返回:true
"barackobama"
返回:false
方式三:基於快速排序的partition,可以邊排序邊找重複,也即是每次partition之後,判斷中間key元素與兩邊元素是否相同,相同則返回false,不同再進行下一輪partition.時間複雜度也是o(nlongn)
#includeusing namespace std;
#include#include//方式一
/*bool checkdifferent(string inistring)
; for (int i = 0; i < inistring.length(); ++i)
for (int i = 0; i < inistring.length(); ++i)
return true;
}*///方式二
/*bool checkdifferent(string inistring)
*///方式三
bool qsort(string str,int low,int high)
swap(str[low],str[high]);
while (low < high && str[high] >= key)
swap(str[low],str[high]);
} if (low != first && str[low] == str[low-1])
return false;
if(low != high && str[low == str[low+1]])
return false;
return qsort(str,first,low-1) && qsort(str,low+1,second);
}bool checkdifferent(string inistring)
int main()
{ cout << checkdifferent("aeiou") <
乙個字串的面試題
題目 有一字串由m個單詞組成單詞之間有空格隔開 只有空格,沒有其他標點符號 有n個關鍵字,現在要在字串中找出包含n個關鍵字 每個關鍵字至少出現一次,沒有說要不要按什麼順序 的最短子串。函式原型 string extractsummary string description,string keywo...
確定乙個字串所有字元是否都不同
題目 實現乙個演算法,確定乙個字串的所有字元是否都不相同。解答 總共有256個字元,可以申請乙個布林陣列,初始化都為false.遍歷所有字元,把字元對應到布林陣列,如果陣列該位為true,則說明之前該字元出現過,否則修改值為true。bool same char str for int i 0 i ...
確定乙個字串的所有字元是否全都不同
題目 給定乙個string inistring 請返回乙個bool值,true 代表所有字元全都不同,false 代表存在相同的字元。保證字串中的字元為ascii字元。字串的長度小於等於3000。思路 用乙個int做位運算,乙個int4個位元組32位,一共26個字母綽綽有餘。include incl...