C++输入一个字符串s和一个长度相同的整数数组arr,将输入字符串的第 i个字符移动到数组arr[i]指示的位置,输出重新排列后的字符串
时间: 2024-10-29 11:24:55 浏览: 25
在C++中,你可以通过以下几个步骤来实现这个功能:
1. 首先,你需要从用户那里获取输入的字符串 `s` 和整数数组 `arr`。这通常通过 `cin` 函数完成:
```cpp
#include <iostream>
#include <string>
std::string s;
int arr[100]; // 假设数组大小足够大
// 获取输入
std::cout << "请输入字符串s: ";
std::getline(std::cin, s);
for (size_t i = 0; i < sizeof(arr) / sizeof(arr[0]); ++i) {
std::cout << "请输入数组元素arr[" << i << "]: ";
cin >> arr[i];
}
```
2. 接下来,你需要创建一个新的字符串 `result` 来存储重新排列后的字符串。遍历输入数组,并根据新位置更新 `result`:
```cpp
std::string result = "";
for (size_t i = 0; i < s.length(); ++i) {
result += s.substr(i, 1); // 使用substr函数提取字符并添加到结果
if (i < arr[i]) { // 如果当前索引小于目标位置,跳过
continue;
}
for (size_t j = i + 1; j > arr[i]; --j) { // 将后续字符前移
s[j - 1] = s[j]; // 更新原字符串
}
s[arr[i]] = s[i]; // 将当前字符移到目标位置
i--; // 因为已修改了原索引,需要回退以便继续处理剩余字符
}
```
3. 最后,打印出结果:
```cpp
std::cout << "重新排列后的字符串: " << result << std::endl;
```
阅读全文