C++程序 使用STL检查数组是否回文
给定一个数组,任务是使用C++中的STL确定数组是否为回文。
示例:
输入: arr[] = {3, 6, 0, 6, 3}
输出: 回文
输入: arr[] = {1, 2, 3, 4, 5}
输出: 不是回文
方法:
- 使用STL中提供的 reverse() 方法获取数组的反转方式。
- 将标志设置为未设置 int flag = 0 。
- 循环数组直到大小为n,并检查原始数组和反转数组是否相同。如果不同,则将标志设置为1。
- 循环结束后,如果设置了标志,则打印“不是回文”否则打印“回文”
以下是上述方法的实现:
//使用C++ STL检查数组是否回文
#include
using namespace std;
void palindrome(int arr[], int n)
{
//将flag初始化为零
int flag = 0;
//创建另一个数组来存储原始数组
int arr2[n];
memcpy(arr2, arr, n * sizeof(int));
//反转数组
reverse(arr, arr + n);
//检查数组是否是回文
for (int i = 0; i < n; i++)
if (arr[i] != arr2[i]) {
flag = 1;
break;
}
//打印结果
if (flag == 0)
cout << "回文\n";
else
cout << "不是回文\n";
}
int main()
{
//获取数组
int arr[] = { 1, 2, 3, 2, 1 };
//计算大小
int n = sizeof(arr) / sizeof(arr[0]);
palindrome(arr, n);
return 0;
}
输出:
回文
时间复杂度 :O(n)
辅助空间 :O(n)