用c++写一个程序,输入一个字符串,如果说在这个字符串中有一段连续的位置是同一个字母的话,需要把它们合在一起。比如现在有一个字符串为 "ABBCCCA",那么你需要输出 "A2B3CA"。
时间: 2024-09-16 15:03:30 浏览: 28
要编写一个 C++ 程序来实现这个功能,我们可以使用两个指针,一个从左向右扫描,另一个用于记录当前位置开始的最长相同字符序列。以下是实现的一个简单版本的代码:
```cpp
#include <iostream>
#include <string>
std::string merge_consecutive_chars(const std::string &str) {
if (str.empty()) {
return str;
}
std::string result = "";
char prev_char = str[0];
int count = 1;
for (size_t i = 1; i < str.length(); ++i) {
if (str[i] == prev_char) { // 同样的字符
count++;
} else { // 不同的字符
result += std::to_string(prev_char) + std::to_string(count);
prev_char = str[i];
count = 1;
}
}
// 将最后一个连续字符添加到结果
result += std::to_string(prev_char) + std::to_string(count);
return result;
}
int main() {
std::string input;
std::cout << "Enter a string: ";
std::getline(std::cin, input);
std::string output = merge_consecutive_chars(input);
std::cout << "Output after merging consecutive characters: " << output << std::endl;
return 0;
}
```
在这个程序中,我们逐个检查字符串中的字符,如果遇到相同的字符就累加计数器,直到遇到不同的字符为止。然后我们将之前连续的字符和计数值转换为字符串形式,添加到最终结果中。
阅读全文