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