字串陣列所有排列,找指定串位置

2021-06-18 14:57:18 字數 792 閱讀 1618

字串陣列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 擷取從指定索引 ...