输入一个长度不超过100的字符串,删除串中的重复字符。
生活随笔
收集整理的這篇文章主要介紹了
输入一个长度不超过100的字符串,删除串中的重复字符。
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
#include <stdio.h>
#include <string.h>
#define N 200
int main()
{ char a[N]; //存儲字符串. int i,j,n; char k; gets(a);//讀入字符串. //控制外層循環的趟次,并提供趟次號變量iint 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總結
以上是生活随笔為你收集整理的输入一个长度不超过100的字符串,删除串中的重复字符。的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java实现手机号码归属地
- 下一篇: 半导体激光器的工作原理