字符串壓縮——C語言


    某公司的一道編程題(好像不提公司名比較好,不然總感覺怪怪的):對輸入字符串進行壓縮,輸入"aaabcccdde",輸出"3ab3c2de",即對連續出現的字符進行壓縮。

    如果數據結構是數組的話,主要是要解決兩個問題,一是統計重復的字符,二是確定數組壓縮后每個元素在數組中所處的位置。

    可以用一個指針遍歷數組,另一個指針標記存儲位置。

    (現在解決問題還是處於暴力解題階段,性能魯棒性什么的還都沒考慮,一般也只懂得循環循環,得提高了!)

    void string_compress( char s[] )

    {

        int i, j;

        int count;

        int len = strlen( s );

        if( s == NULL )

            return;

        for( i = 0, j = 0; i < len; i++ )        /*j用於標記存儲位置*/

        {

            count = 1;        /*在遍歷過程中統計每個字符連續出現的位置*/

            while( s[i] = s[i + 1] )

                {

                     i++;

                     count++;

                }

             if( count > 1 )

             {

                 s[j] = count + '0';        /*將整型數據count轉換為字符*/

                 j++;        /*位置j存數字,j + 1存字符*/

                 s[j] = s[i];

             }

             else

                 s[j] = s[i];

              j++;

        }

        s[j] = '\0';        /*字符串末尾加結束符*/

    }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM