cpp输入一个小写字符串,删除所有相同且相邻的小写字母。如输入dbbdut最后变成ut
时间: 2024-10-10 16:14:29 浏览: 12
在C++中,要实现这个功能,可以使用双指针以及一个临时变量。基本步骤是遍历字符串,比较当前字符与前一个字符是否相等。如果不同,则添加到结果字符串;如果相同,则检查下一个字符是否也相同,只有当连续两个相同的字符都被找到时才跳过,直到遇到不同的字符。以下是简单的代码示例:
```cpp
#include <iostream>
#include <string>
std::string removeAdjacentDuplicates(std::string input) {
if (input.empty()) return input; // 空字符串直接返回
std::string result = "";
char prevChar = input[0]; // 初始化前一个字符
for (char currChar : input) {
if (currChar != prevChar) { // 遇到不同字符
result += currChar;
}
prevChar = currChar; // 更新前一个字符
}
return result;
}
int main() {
std::string str = "dbbdut";
std::cout << removeAdjacentDuplicates(str) << std::endl; // 输出:ut
return 0;
}
相关问题
描述 输入一个字符串(只包含小写字母),按照字符串原有的顺序输出(相同字符的只保留一个),例如输入ccbba,输出cba 输入 输入一个字符串(只包含小写字母),按照字符串原有的顺序输出(相同字符的只保留一个),例如输入ccbba,输出cba 输出 按照字符串原有的顺序输出(相同字符的只保留一个) 输入样例 1 bdcabde 输出样例1 bdcae c++ 代码
您好!您可以使用以下C++代码来实现输入一个字符串,按照字符串原有的顺序输出,相同字符只保留一个。
```cpp
#include <iostream>
#include <string>
#include <unordered_set>
std::string removeDuplicates(const std::string& str) {
std::string result;
std::unordered_set<char> seen;
for (char c : str) {
if (seen.find(c) == seen.end()) {
result.push_back(c);
seen.insert(c);
}
}
return result;
}
int main() {
std::string input;
std::cout << "输入一个字符串: ";
std::cin >> input;
std::string output = removeDuplicates(input);
std::cout << "输出: " << output << std::endl;
return 0;
}
```
这段代码首先定义了一个 `removeDuplicates` 函数,该函数使用了一个 `std::unordered_set` 来保存已经出现过的字符,然后遍历输入字符串,只将未在集合中出现过的字符加入结果字符串中。
在 `main` 函数中,首先获取用户输入的字符串,然后调用 `removeDuplicates` 函数得到输出结果,并将结果输出到控制台。
希望对您有所帮助!如果您有任何其他问题,请随时提问。
对输入的一行字符串做如下操作:将大写字母反向连成字符串,将小写字母正向连成字符串,最后输出一个字符串。C++
以下是一个 C++ 程序,可以实现你的要求:
```cpp
#include <iostream>
#include <string>
using namespace std;
int main() {
string s;
getline(cin, s); // 读入一行字符串
string upper, lower;
for (int i = 0; i < s.size(); i++) {
if (isupper(s[i])) { // 如果是大写字母
upper = s[i] + upper; // 反向加入 upper 字符串
} else if (islower(s[i])) { // 如果是小写字母
lower += s[i]; // 正向加入 lower 字符串
}
}
cout << upper << lower << endl; // 输出组合后的字符串
return 0;
}
```
程序中,我们首先读入一行字符串,然后遍历每个字符,如果是大写字母则将其反向加入 `upper` 字符串中,如果是小写字母则将其正向加入 `lower` 字符串中。最后将 `upper` 和 `lower` 连接起来输出即可。注意,我们使用 `isupper` 和 `islower` 函数来判断字符是否是大写字母或小写字母。