文字配列の冗長要素を削除するC言語学習

1.原理を理解する

文字配列 abbbcaddd がある場合、この配列に冗長な同じ文字を削除させ、最後に abcd を削除させるにはどうすればよいですか?

ここでは、最初に sizeof を使用して配列のサイズを計算し、次に sizeof を介して文字サイズの値で割り、文字が持つ要素の数を計算します。

1 つ目は、2 つの for ループをトラバースし、内側のレイヤーから外側のレイヤーまでトラバースして、どの文字が同じかを見つけることです。

 外側の層が a を見つけた後、内側のループはそれぞれを検索しますが、見つかった最初の値は削除できないため、内側のループの値が外側のループの値 + 1 の場合、つまり:

 次に、2 つの同一の文字が見つかったら、それらを引き続き検索して削除する必要があります。3 つの b があるため、1 つだけを削除することはできないため、次のようになります。

 次に、文字が削除されるたびに、配列の値を減らすことができます。コードは次のとおりです。

#include<stdio.h>
int main()
{
    char words[] = "abbbcadddd";
    int len = sizeof(words) / sizeof(words[0]);
    for (int i = 0; i < len-1; i++)
    {
        for (int k = i + 1; k < len - 1;)
        {
            if (words[i] == words[k])
            {
                for (int t = k; t < len - 1; t++)
                {
                    words[t] = words[t+1];
                }
                len--; //数组的长度-1
            }
            else
            {
                k++;
            }
        }
    }
    puts(words);

    return 0;
}

おすすめ

転載: blog.csdn.net/q244645787/article/details/126615745