排列若干個字串,判斷是否首尾可以連線在一起

2021-07-22 08:06:28 字數 1670 閱讀 5827

給出乙個二維的字串,即n行一列,如array[4][1] = ;取出每個字串的首尾字元,進行判斷是否可以形成首尾相連,array陣列中取出的分別為:「df」,」ac」,」cd」,」fl」,可以形成a->c->c->d->d->f->f->l,因此我們判斷得出結論上述輸入可以形成首尾相連.這裡我們要注意的是從陣列中取出首尾字元後要進行所有可能的排列,然後判斷是否可以形成首尾相連。

這裡我們給出兩種方法,第一種利用stl中的相關函式實現

//排列若干個字串,檢查字串是否收尾相接,若是返回1,否則返回-1

bool seriesarray(char** array,int row,int column)

;int num = row;//定義乙個變數表示字串的個數

vector

v;//生成row*2個物件

for (int i = 0;i < row;i++)

vector

::iterator iter; //iterator 抽象了指標的絕大部分基本特徵*

printf("輸出每乙個字串的首尾字元: ");

for( iter = v.begin(); iter != v.end(); iter++ )

printf("%c",*iter) ;

printf("\n");

vector

temp(v);

vector

out;//結果放在out中

out.reserve(row*2);

out.push_back(v[0]);//array[0][0]///給out[0]和out[1]賦值

out.push_back(v[1]);//array[0][strlen(array[0])-1]/

//vector::iterator itor = temp.begin();

temp.erase(temp.begin());

temp.erase(temp.begin());//刪除前兩個字母

num--;

//判斷,乙個字串的頭是否是另外幾個的尾部,且頭部所在的為偶數(從0開始),尾部所在的下標為奇數

//分成三部分,1.out[0],out[1]在頭部,即out[0]不是其餘某乙個字元的尾部,而out[1]是其餘某乙個的頭部;

在中部,out[0]是其餘某乙個的尾部,out[1]是其餘某乙個的頭部;

在尾部,out[0]是某一字元的尾部,out[1]是結束部分;

while (num != 0)

}for(i = 0;i < (int)temp.size()/2;i++)

}if(flag == num)

}if (num == 0 && temp.empty() )

result = true;

return result;

}

bool  seriesarray(vector

&vec, int str_nums)

if (j == str_nums)

result = true;

next_permutation(com.begin(), com.end());//對com中的元素進行全排列

}return result;

}int getfaci(int n)

js 判斷字串是否包含某個字元

方法一 indexof 推薦 var str 123 console.log str.indexof 3 1 trueindexof 方法可返回某個指定的字串值在字串中首次出現的位置。如果要檢索的字串值沒有出現,則該方法返回 1。方法二 search var str 123 console.log ...

判斷兩個字串是否相同

data segment mess1 db computer software mess2 db computer software data ends code segment assume ds data,cs code start mov ax,data mov ds,ax mov es,ax...

js 判斷字串中是否包含某個字串

string物件的方法 方法一 indexof 推薦 var str 123 console.log str.indexof 3 1 true indexof 方法可返回某個指定的字串值在字串中首次出現的位置。如果要檢索的字串值沒有出現,則該方法返回 1。方法二 search var str 123...