[問題] 刪除重複字串
看板C_and_CPP (C/C++)作者Justion (just feeling )時間15年前 (2010/08/10 21:20)推噓4(4推 0噓 11→)留言15則, 8人參與討論串1/1
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 )
( 未必需要依照此格式,文章條理清楚即可 )
遇到的問題: (題意請描述清楚)
有任意兩個字串結合,若兩字串皆有重覆的字元都會被刪除掉
例如:有一個字串為"abcd",另一個字串為"bde",
兩字串結合會產生出"ace",
目前我的想法為把兩字串先結合起來成為"abcdbde",
再用此字串"abcdbde"每一個字元去比對同字串的其他字元是否有相同,
沒有相同的字元再存入一個buffer裡。
但是程式跑出來的結果卻為"acbe"
想請教板上的高手,程式該如何修正,
或是否有更好的判斷方法,小弟我想了一天都還是無法解決@@
謝謝,有問題的程式如下
開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux)
Microsoft Visual Studio 2005
有問題的code: (請善用置底文標色功能)
#include <stdio.h>
#include <stdlib.h>
void main(void)
{
unsigned char *str="abcd";
unsigned char *str1="bde";
int i=0,j=0,a,b,k=0,g,w=0;
int t=1,f=0;
int flag=0;
unsigned char *buffer;
while(*(str+i))
{
i++;
}
while(*(str1+j))
{
j++;
}
buffer=(unsigned char *)malloc((i+j+1)*sizeof(unsigned char));
for(k=0;k<i;k++)
{
buffer[k]=*(str+k);
}
for(g=k;g<i+j;g++)
{
buffer[g]=*(str1++);
}
for(b=0;b<i+j;b++)
{
for(a=0;a<i+j;a++)
{
if(a==b)
continue;
if(buffer[a]==buffer[b])
{
flag = 1;
break;
}
else
{
flag = 0;
}
}
if(flag==0)
{
buffer[w++]=buffer[b];
}
}
buffer[w++]='\0';
printf("%s\r\n",buffer);
free(buffer);
system("pause");
return;
}
補充說明:
我知道是判斷是否為重複字元那邊的for迴圈有問題,
但依然想不通該如何修正,麻煩高手指導一下,謝謝。
--
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.42.214.27
→
08/10 21:23, , 1F
08/10 21:23, 1F
→
08/10 21:23, , 2F
08/10 21:23, 2F
→
08/10 21:24, , 3F
08/10 21:24, 3F
推
08/10 21:25, , 4F
08/10 21:25, 4F
→
08/10 21:25, , 5F
08/10 21:25, 5F
→
08/10 21:41, , 6F
08/10 21:41, 6F
推
08/10 21:55, , 7F
08/10 21:55, 7F
→
08/10 21:57, , 8F
08/10 21:57, 8F
→
08/10 21:58, , 9F
08/10 21:58, 9F
→
08/10 22:01, , 10F
08/10 22:01, 10F
推
08/10 22:46, , 11F
08/10 22:46, 11F
→
08/10 22:46, , 12F
08/10 22:46, 12F
→
08/11 11:41, , 13F
08/11 11:41, 13F
推
08/11 14:01, , 14F
08/11 14:01, 14F
→
08/11 20:51, , 15F
08/11 20:51, 15F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章