输入一个长度不超过100的字符串,删除串中的重复字符。
#include <stdio.h> #include <string.h> #define N 200 int main() { char a[N]; //存储字符串. int i,j,n; char k; gets(a);//读入字符串. //控制外层循环的趟次,并提供趟次号变量i int f=strlen(a); for(i=0;i<strlen(a);i++) { for(n=0;n<i;n++)//内层遍历从i=1开始进入,控制各趟次内需要执行循环的次数 { if(a[i]==a[n]) //n比i更加常变:每趟比较中,i只有相同的一个值,而n由i个值.;每一趟中,i就作为一个标杆 { //a[i] == a[n]意味着出现了重复字符; //下面这个循环将下一个值替代上一个值,即相当于把位置i之后的那部分子字符串向前集体地挪了一格,从而减小重复字符串的规模 for(j=i;j<f;j++) { a[j]=a[j+1]; //迭代a[j] ,并对字符数组(字符串)做出了该改变(j+1)可以触及到字符串结束符'\0' ! } //i=i-1;//将这轮发生处理地循环重新执行??/(迭代),最外层i++会加回到这个i, i -= 1; break;//直达外层for }//刚从此处离开后,n++(n将+1),之后,在这一轮发生地if将是上一轮规模地比较,不会再更改字符串了,直到外层地i++后重新开始 } //刚从此处离开后,会执行在外面一层地循环变量迭代(i++) } puts(a); return 0; }
版本二:
#define _CRT_SECURE_NO_WARNINGS /* 题目描述 输入一个长度不超过100的字符串,删除串中的重复字符。 输入要检查的字符串,长度不超过100个字符:abacaeedabcded. 输出删除重复字符后的字符串:abced. 样例输入saas 样例输出sa */ //握手模型;最理想地输入的比较次数规模(1+2+..+n)地规模(类似勾股数枚举) #include <stdio.h> #include <string.h> int main() { //int a[100] = { 0 }; char a[100] = { 0 }; int i, j; gets(a); int len = strlen(a); for (i = 0; i < len; i++) { const char tmp = a[i]; if (tmp != -1) { for (j = i + 1; j < len; j++) { if (tmp == a[j]) { a[j] = -1; } } } } for (int i = 0; i < len; i++) { if (a[i] != -1) { printf("%c", a[i]); } } printf("\n"); } /*失败的彩蛋*/ //for (i = 0; i < len; i++) //{/*用最简单的输入测试:dd */ // const char tmp = a[i]; // for (j = i + 1; j < len; j++) // { // if (tmp == a[j]) // { // for (int k = j; k < len - 1; k++) // { // a[k] = a[k + 1];/*要注意:k+1<len(或说k<=len-1)*/ // } // len--; // j = i + 1; // } // }//for //}//for
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2022-10-31 PT_大数定律LLN
2021-10-31 powershell@scoop安装的若干方法@scoop安装失败的解决方案@国内镜像加速下载scoop本身和scoop软件源bucket
2021-10-31 win11@安装WSA(android系统)@命令行安装app