C++输入一个字符串s和一个相同长度的整数数组arr,将输入字符串的第i个字符移动到数组arr[i]指示的位置输出重新排列的字符串
时间: 2024-10-27 19:10:09 浏览: 12
浅谈C++中字符串输入get与getline的区别
5星 · 资源好评率100%
在C++中,你可以编写一个函数来实现这个需求。首先,你需要获取用户输入的字符串和整数数组,然后遍历数组,按照每个整数元素调整字符串中的相应字符位置。下面是一个简单的示例:
```cpp
#include <iostream>
#include <vector>
#include <string>
std::string rearrangeStringAndArray(const std::string& s, const std::vector<int>& arr) {
if (s.length() != arr.size()) {
throw std::invalid_argument("Invalid input: string length does not match array size");
}
std::string result = s;
for (size_t i = 0; i < arr.size(); ++i) {
if (arr[i] >= 0 && static_cast<size_t>(arr[i]) < s.size()) { // 确保索引合法
char temp = result[arr[i]];
result.erase(arr[i], 1); // 移除原字符
result.insert(result.begin() + i, temp); // 插入新位置
} else {
std::cerr << "Invalid index at position " << i << ": " << arr[i] << "\n";
}
}
return result;
}
int main() {
std::string s;
std::vector<int> arr;
std::cout << "Enter a string: ";
std::getline(std::cin, s);
std::cout << "Enter an integer array of the same length: ";
for (int num; std::cin >> num; arr.push_back(num)) {}
try {
std::string rearrangedStr = rearrangeStringAndArray(s, arr);
std::cout << "Reordered string with characters at given positions: " << rearrangedStr << std::endl;
} catch (const std::exception& e) {
std::cerr << "Error: " << e.what() << std::endl;
}
return 0;
}
```
在这个示例中,我们首先检查字符串长度是否等于数组长度。然后,我们遍历数组,如果索引有效,就移动并插入对应的字符;如果无效,我们将给出错误提示。最后返回新的字符串。
阅读全文