程序描述:对输入的字符串进行缩减,重复的字符只保留前面一个
某公司的机试题,本来挺简单的,开始以为是删除连续重复的字符,后面才看见不能出现所有重复的字符,于是就有了程序的两次处理。程序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