1. 程式人生 > >去除字符串中的連續相同元素

去除字符串中的連續相同元素

想去 string freopen i++ lap con ide ext alt

食堂排隊

發布時間: 2018年4月9日 15:09 最後更新: 2018年4月9日 17:54 時間限制: 1000ms 內存限制: 128M

某日,食堂窗口推出一款新美食,每個班的同學都想去嘗一嘗。於是,很多人都去這個窗口排隊,但是,隊伍中如果同班同學相鄰站著的話,他們就只需要一個人排在隊伍中就行了。例如某次隊伍情況:12221133345678899,那麽就會變成一條新的隊伍:1213456789。

輸入有多組數據,對於每組數據只有一行長度不超過100的字符串。(該字符串只包含數字和字母)

輸出新串。

12221133345678899
aabbbbbbbccccddeeeeffgg
1213456789
abcdefg


字符串的水題還是不太熟練啊。
像這種簡單題要盡量做到秒殺。

我的代碼:
技術分享圖片
#include <cstdio>
#include <cstring>

int main()
{
    char a[101]; 
    while (scanf("%s", a) != EOF)
    {
        char b[101];
        int i, j;
        int len = strlen(a); int
cur = 0; for (i = 0; i < len;) { j = i + 1; b[cur++] = a[i]; while (a[j] == a[j - 1]) { j++; } i = j; } for (i = 0; i < cur; i++)printf("%c", b[i]); printf("\n"); }
return 0; }
View Code

精簡代碼:

技術分享圖片
#include<cstdio>
#include<cstring>
int main()
{
    //freopen("data.in","r",stdin);
    char s[110];
    while(scanf("%s",s)!=EOF)//多組輸入格式
    {
        printf("%c",s[0]);
        for(int i=1;i<strlen(s);i++)
        {
            if(s[i]==s[i-1])
                continue;
            printf("%c",s[i]);
        }
        printf("\n");
    }
    return 0;
}
View Code



2018-04-11

去除字符串中的連續相同元素