字符串重复问题

这是一个关于字符串处理的程序,目标是去除输入字符串中的重复字符,仅保留每个字符的第一个出现。最初用C++实现,后来用Python重写,作者认为Python更方便。在C++版本中,由于安全性考虑使用了gets_s()函数,程序接受测试输入如'1122aabbbbccaaaaa44443333bbbbb9889555',并返回结果'12abc43985'。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

程序描述:对输入的字符串进行缩减,重复的字符只保留前面一个

 

某公司的机试题,本来挺简单的,开始以为是删除连续重复的字符,后面才看见不能出现所有重复的字符,于是就有了程序的两次处理。程序BUFFER1000,用gets函数并不安全,所以vs中是gets_s()函数。已知对使用字符串不是很顺畅,今天写出来这个小程序还是感觉不错!

——————————————————————————————————————

2018.9.5更新   偶然看到,重新用python写了一次................还是python用起爽。

# coding: utf8

if __name__ == "__main__":
    string = input("Enter: ")
    string = list(string)

    result = list(set(string))
    result.sort(key = string.index)
    print(''.join(result))

 

——————————————————————————————————————

 

 

VC6.0编译代码:

 

#include<stdio.h>
#include<string.h>
#include<windows.h>
int main(){
	char str[1000] = {0};
	gets(str);
	int len = strlen(str);
	for(int i = 0;i < len;i++){                //第一次处理输入的字符串,将连续出现的字符串缩减成一个
		if(str[i] == str[i+1])
		{
			for(int k = i;k < len;k++)  //删除字符后移动后面的字符串
			{
				str[k+1] = str[k+2];
			}
			len = len - 1;
			i = 0;
		}
	}

         //对剩下的字符串检测重复的,保留前者
	for(int p = 0;p < len;p++){
		for(int q = p;q < len ;q++){
			if(str[p] == str[q] && p != q){
				for(int y = q;y < (len-1);y++)
				{
					str[y]  = str[y+1];
				}
				len = len - 1;
				p = p - 1;
			}
		}
	}

	for(int j = 0;j < len;j++){
		printf("%c",str[j]);
	}
	printf("\n");
	getchar();
	getchar();
	return 0;
}

 

 

 

 

 

测试输入:1122aabbbbccaaaaa44443333bbbbb9889555

测试输出:12abc43985

 

 

                                                                                                                               ——2015.9.20 By H3arts

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值