通过键盘输入一串小写字母(a~z)组成的字符串,编写一个测试程序,将字符串中连续出现的重复字符删去(即在一个字符串中,如果遇到连续重复的字符只出现一次),然后输出处理后的字符串。例如: str1="aabbccddaabbccdd",输出结果为:"abcdabcd"。
时间: 2024-02-12 08:06:17 浏览: 22
好的,我可以帮你解决这个问题。以下是一个 Python 的实现代码:
```python
def remove_repeat_chars(s):
result = []
for c in s:
if not result or c != result[-1]:
result.append(c)
return ''.join(result)
s = input("请输入一个小写字母组成的字符串:")
print("去重后的字符串为:", remove_repeat_chars(s))
```
这个程序首先定义了一个 `remove_repeat_chars` 函数,实现了去重的功能。它遍历输入字符串 `s` 中的每个字符,如果当前字符和上一个字符不同,就将当前字符加入输出结果列表 `result` 中。最后将 `result` 中的字符连接成一个新字符串并返回。
然后程序读取用户从键盘输入的字符串,并调用 `remove_repeat_chars` 函数去重。最后打印输出去重后的字符串。
希望这个代码可以帮到你。
相关问题
通过键盘输入一串小写字母(a到z)组成的字符串。请编写一个字符串压缩程序(函数实现),将字符串中连续出席的重复字母(不超过9个)进行压缩,并输出压缩后的字符串。
好的,这是一个字符串压缩的问题。我们可以在遍历字符串的过程中记录字母出现的次数,如果出现的字母不同或者连续出现的个数超过了9个,就将其压缩后输出。以下是实现这个程序的Python代码:
```
def compress_string(s):
if not s:
return ""
res, count = "", 1
for i in range(1, len(s)):
if s[i] == s[i-1]:
count += 1
else:
res += s[i-1] + str(count) if count <= 9 else s[i-1] + '9'
count = 1
res += s[-1] + str(count) if count <= 9 else s[-1] + '9'
return res
```
现在,请问还有什么问题需要我回答呢?
用c语言编写,从键盘输入一个字符串,统计按a到z各个字母的出现字数
OK,请输入代码:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[100]; // 假设字符串长度不超过100
int len, count[26] = {0}; // count数组存放按a到z的字母出现次数
printf("请输入一个字符串:\n");
fgets(str, sizeof(str), stdin); // 从键盘读入字符串
len = strlen(str); // 获取字符串长度
for (int i = 0; i < len; i++) {
if (str[i] >= 'a' && str[i] <= 'z') { // 判断字符是否为小写字母
count[str[i] - 'a']++; // 字符出现次数加一
}
}
// 输出a到z各字母出现次数
for (int i = 0; i < 26; i++) {
printf("%c:%d\n", 'a' + i, count[i]);
}
return 0;
}
```
如果你想使用更好的观感,可以在个别系统上使用:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[100]; // 假设字符串长度不超过100
int len, count[26] = {0}; // count数组存放按a到z的字母出现次数
printf("请输入一个字符串:\n");
fgets(str, sizeof(str), stdin); // 从键盘读入字符串
len = strlen(str); // 获取字符串长度
for (int i = 0; i < len; i++) {
if (str[i] >= 'a' && str[i] <= 'z') { // 判断字符是否为小写字母
count[str[i] - 'a']++; // 字符出现次数加一
}
}
// 打印表头
printf("+-----+-----+\n");
printf("|%-5s|%-5s|\n", "字母", "出现次数");
printf("+-----+-----+\n");
// 输出a到z各字母出现次数
for (int i = 0; i < 26; i++) {
printf("|%-5c|%-5d|\n", 'a' + i, count[i]);
printf("+-----+-----+\n");
}
return 0;
}
```