歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

C++排列對稱串

題目內容:字符串有些是對稱的,有些是不對稱的,請將那些對稱的字符串按從小到大的順序輸出。字符串先以長度論大小,如果長度相同,再以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