不規則圖形排列?輸入多個字符串,有些是對稱的,有些是不對稱的,請将那些對稱的字符串按從小到大的順序輸出字符串先以長度論大小,如果長度相同,再以ASCII碼值為大小标準,今天小編就來說說關于不規則圖形排列?下面更多詳細答案一起來看看吧!
輸入多個字符串,有些是對稱的,有些是不對稱的,請将那些對稱的字符串按從小到大的順序輸出。字符串先以長度論大小,如果長度相同,再以ASCII碼值為大小标準。
輸入輸入第一行是一個整數n(1<=n<=100),接下來n行是n個字符串,每個字符串不大于200個字符。
輸出輸出對稱的那些串,并且要求按從小到大的順序輸出,每個字符串占一行。
樣例輸入
7
123321
123454321
123
321
sdfsdfd
121212
after noon retfa
123321
123454321
after noon retfa
#include<iostream>
#include<cstdio>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
bool cmp(const string &s1, const string &s2)//使用const:因為引用傳參,比拷貝傳參的效率要高,const是因為隻是比較,而沒有修改其内容。
{
return s1.length() != s2.length() ? s1.length()<s2.length() : s1<s2;
}
int main()
{
int n;
char ch;
vector<string> v;
cin >> n;
scanf("%c", &ch);//吃掉n之後的換行符,vc使用scanf(),在vs2013中不安全,提示為scanf_s();
string t, s;
//while(n--)
for (int k = 0; k<n; k )
{
getline(cin, t);//cin>>s不能輸進空格
s = t;
reverse(t.begin(), t.end());
if (t == s)
{
v.push_back(s);
}
}
sort(v.begin(), v.end(), cmp);
for (int i = 0; i<v.size(); i )
{
cout << v[i] << endl;
}
return 0;
}
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!