用C++实现Description: 很多字韦,有些是对称的,有些是不对称的,请将那些对称的字串按从小到大的顺序输出。字串先以长度论大小,如果长度相同,再以ASCI码值为大小标准。Input: 输入数据中含有一些字串( 1s串长≤256 )。 Output: 根据每个字串,输出对称的那些串, 并且要求按从小到大的顺序输出
时间: 2023-06-17 22:02:50 浏览: 128
利用C++实现以下经典数据结构算法:线性表、栈、队列、数组(特殊矩阵、稀疏矩阵压缩)、串(朴素模式匹配、KMP算法)、树.zip
以下是用C++实现的代码:
```c++
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
bool isPalindrome(string str) { // 判断是否为回文串
int len = str.length();
for(int i = 0; i < len / 2; i++) {
if(str[i] != str[len - i - 1]) {
return false;
}
}
return true;
}
bool cmp(string a, string b) { // 按长度和字典序排序
if(a.length() == b.length()) {
return a < b;
}
return a.length() < b.length();
}
int main() {
string str;
int cnt = 0; // 统计回文串个数
string palindromes[100]; // 存储回文串
while(cin >> str) {
if(isPalindrome(str)) { // 如果是回文串,存储到数组中
palindromes[cnt++] = str;
}
}
sort(palindromes, palindromes + cnt, cmp); // 排序
for(int i = 0; i < cnt; i++) {
cout << palindromes[i] << endl; // 输出
}
return 0;
}
```
首先定义一个`isPalindrome()`函数,用于判断一个字符串是否为回文串。然后定义一个`cmp()`函数,用于按长度和字典序排序。接着读入字符串,如果是回文串则存储到数组中。最后对数组进行排序,按顺序输出回文串即可。
阅读全文