歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> C++排列對稱串

C++排列對稱串

日期:2017/3/1 9:51:49   编辑:Linux編程

題目內容:字符串有些是對稱的,有些是不對稱的,請將那些對稱的字符串按從小到大的順序輸出。字符串先以長度論大小,如果長度相同,再以ASCII碼值為排序標准。

輸入描述:輸入數據中含有一些字符串(1<=串長<=256)。

輸出描述:根據每個字符串,輸出對稱的那些串,並且要求按從小到大的順序輸出。

題目分析:

(1)定義一個string類型的向量容器

(2)將輸入的字符串反轉,看是否和原字符串相同,以此判斷字符是否對稱

(3)若對稱,則將該字符串插入到向量容器中

(4)使用sort算法對向量元素排序,自己設計排序比較函數,把這個函數指定給sort算法

排序比較函數的具體方法是,判斷參與比較的沒兩個字符串的長度是否相等,若不相等則按長度從小到大的順序返回;若相等則以ASCII碼值為排序標准,即按字符串從小到大排序

參考代碼:


#include <fstream>

#include <iostream>

#include <string>

#include <vector>

#include <algorithm>

using namespace std;

bool Comp(const string &s1,const string &s2)

{

return s1.length()!=s2.length()?s1.length()<s2.length():s1<s2;

}

int main(int argc,char * argv[])

{

vector<string> v;

string t,s;

while(cin>>s)

{

t=s;

reverse(t.begin(),t.end());

if(t==s)

{

v.push_back(s);

}

if(cin.get()=='\n')

{

break;

}

}

sort(v.begin(),v.end(),Comp);

for(int i=0;i<v.size();i++)

{

cout<<v[i]<<endl;

}

system("pause");

return 0;

}

運行結果:

Copyright © Linux教程網 All Rights Reserved