c++字符串回文数使用vector
时间: 2023-10-23 18:28:31 浏览: 87
以下是使用vector实现字符串回文数的示例代码:
```c++
#include <iostream>
#include <vector>
#include <string>
using namespace std;
bool isPalindrome(string s) {
vector<char> v;
for (char c : s) {
if (isalnum(c)) {
v.push_back(tolower(c));
}
}
for (int i = 0, j = v.size() - 1; i < j; i++, j--) {
if (v[i] != v[j]) {
return false;
}
}
return true;
}
int main() {
string s = "A man, a plan, a canal: Panama";
cout << isPalindrome(s) << endl; // 输出 1
return 0;
}
```
此代码首先将字符串中的所有字母和数字转换为小写,并将它们存储在vector中。然后,使用两个指针从两端同时向中间遍历vector,判断其是否为回文数。如果遇到不相等的字符,则返回false,否则返回true。
相关问题
c++输入若干个int范围内的正整数,用空格隔开,请统计这些数字中有多少个回文数。
在 C++ 中,你可以通过以下步骤来实现这个功能:
1. 首先,创建一个函数用于检查一个整数是否是回文数。这通常涉及到将数字反转并与原数进行比较。例如,可以定义一个 `isPalindrome` 函数,接收一个整数作为参数。
```cpp
bool isPalindrome(int num) {
int reversed = 0;
int temp = num;
while (temp != 0) {
reversed = (reversed * 10) + (temp % 10);
temp /= 10;
}
return num == reversed;
}
```
2. 接着,读取用户输入的一系列整数。你可以使用 `cin` 和 `getline` 来获取输入,并使用 `stringstream` 将字符串转换成整数数组,因为 `getline` 可以处理空格分隔的情况。
```cpp
std::string input;
std::getline(std::cin, input);
std::istringstream iss(input);
std::vector<int> numbers;
int num;
while (iss >> num) {
numbers.push_back(num);
}
```
3. 最后遍历整个数字列表,使用之前定义的 `isPalindrome` 函数计数回文数。
```cpp
int palindromesCount = 0;
for (int i : numbers) {
if (isPalindrome(i)) {
palindromesCount++;
}
}
std::cout << "在给定的整数中,有 " << palindromesCount << " 个回文数。";
```
c++j简短代码输入若干个int范围内的正整数,用空格隔开,请统计这些数字中有多少个回文数。
在C++中,我们可以使用标准库`cin`来获取用户输入,然后遍历这个整数序列,检查每个数是否为回文数。下面是一个简单的示例代码:
```cpp
#include <iostream>
#include <sstream>
#include <vector>
bool isPalindrome(int num) {
std::ostringstream oss;
oss << num; // 将整数转换为字符串便于比较
std::string str = oss.str();
int start = 0, end = str.length() - 1;
while (start < end) {
if (str[start] != str[end]) {
return false;
}
start++;
end--;
}
return true;
}
int main() {
int count = 0;
std::vector<int> numbers;
std::string input;
std::getline(std::cin, input); // 获取一行输入作为一个字符串
std::istringstream iss(input);
int num;
while (iss >> num && num > 0) { // 检查是否在指定范围内,且输入的是正整数
numbers.push_back(num);
if (isPalindrome(num)) {
count++;
}
}
std::cout << "在给定的数字中,有 " << count << " 个回文数。\n";
return 0;
}
```
在这个代码中,我们首先定义了一个函数`isPalindrome`用于检查一个数是否是回文,然后在`main`函数中读取用户的输入,将它们存储在一个向量中,并计算其中的回文数。
阅读全文