字串陣列seq = a,b,c,d,aa,ba,ca,da,ab,bb,cb,db,ac...,aaa,aba,...
(1)aaa是第幾個字串
(2)ababacd是第幾個
(3)第1000個字串是什麼
(4)編寫函式find(),返回字串在seq中是第幾個(語言不限)
分析:(1).長度,很容易推導出長度是n的字串在第4^(n-1)個之後,aaa是1位和2位全排列後的第乙個,即第4^(3-1)+4^(2-1)之後的第乙個,也即第21個。
(2)字元,每個字元可以判斷出它之前的字元全排列了多少次,
字 符: a b a b a c d
全排列: 0 1 0 1 0 2 3
4^次冪: 0 1 2 3 4 5 6
即1*4^1+1*4^3+2*4^5+3*4^6 = 14405(考場不讓用計算器...換成2的次冪來算)。
(3)把1000轉為二進位制是 11 11 10 10 00,
他們分別對應4進製裡的 3 3 2 2 0,
對應字元就是 d d c c a,倒序就是accdd,這裡算出來的是1001的字串,
第1000個是上乙個, 即 accdd-1 = dbcdd。
(4)可執行**如下:
#include #include using namespace std;
long find(char seq)
{ long sum=1;
long tmp=1;
int len = strlen(seq);
for (int i=0;i
字串指定位置
乙個小夥伴的筆試題,非常簡單,題目是編寫乙個zjbmi find函式,實現傳入字串的 z i b m i 字元依次排到最前面。如 輸入 zjbmi is a zzleading brain machine inte ce company in the world 輸出 看了下就是字串刪除與替換,他交...
字串的所有排列
輸入乙個字串,列印出該字串的所有排列,例如輸入字串abc 則列印出a,b,c 所能排列出來的所有字串 abc,acd,bac,bca,cab,cba。看似簡單,其實不是很好做,應該把問題分解為子問題,我們把字串看成兩個部分,首字母自己作為一部分,後面的其他節點當做其它部分。可以看成兩部走 求出所有課...
字串擷取指定位置前後字串
1 rangeofstring 擷取指定字串的長度 2 substringtoindex 7 擷取從0 索引到指定索引 7 長度的字串 3 substringfromindex 9 擷取從指定索引 9 到末尾長度的字串 4 nsrange range nsmakerange 0,7 擷取從指定索引 ...