壓縮文字檔

來源:互聯網
上載者:User
 
8. 壓縮文字檔成績: 10 / 折扣: 0.8背景

壓縮是一種有效減小資料量的方法,目前已經被廣泛應用於各種類型的資訊系統之中。一種壓縮文字檔的方法如下:

  1. 原始文字檔中的非字母的字元,直接拷貝到壓縮檔中;
  2. 原始檔案中的詞(全部由字母組成),如果是第一次出現,則將該詞加入到一個詞的列表中,並拷貝到壓縮檔中;否則該詞不拷貝到壓縮檔中,而是將該詞在詞的列表中的位置拷貝到壓縮檔中。
  3. 詞的列表的起始位置為 1 。

詞的定義為文本中由大小寫字母組成的最大序列。(單詞不跨行)大寫字母和小寫字母認為是不同的字母,即 abc 和 Abc 是不同的詞。詞的例子如下:

  • x-ray 包括兩個詞 x 和 ray
  • mary's 包括兩個詞 mary 和 s
  • a c-Dec 包括三個詞 a 和 c 和 Dec

編寫一個程式,輸入為一組字串,輸出為壓縮後的文本。

輸入

輸入為一段文本,你可以假設輸入中不會出現數字、每行的長度不會超過 80 個字元,並且輸入文本的大小不會超過 10M。

輸出

壓縮後的文本。

 

#include<stdio.h>#include<string.h>int main(){  int j,k=0,m,t=0,flag=1;   char s[84],a[83],word[10000][82];   while( gets(a)!=NULL )     { if(a[0]=='\0'){ printf("\n");  continue;}       for(j=0;a[j]!='\0';j++) s[j+1]=a[j];       s[j+1]='\0';       s[0]=' ';       j=1;t=0;       while(s[j]!='\0')       {  if( ((s[j]>='a'&&s[j]<='z')||(s[j]>='A'&&s[j]<='Z')) && !((s[j-1]>='a'&&s[j-1]<='z')||(s[j-1]>='A'&&s[j-1]<='Z')) )               k++;          if( (s[j]>='a'&&s[j]<='z')||(s[j]>='A'&&s[j]<='Z') )             {  word[k][t++]=s[j];               if( !((s[j+1]>='a'&&s[j+1]<='z')||(s[j+1]>='A'&&s[j+1]<='Z')) )                {  word[k][t]='\0';   flag=1;                   for(m=0;m<k;m++)                     {  if( !strcmp(word[k],word[m]) )   {  printf("%d",m);      k--;      flag=0;                              break;                           }                     }   if(flag)  printf("%s",word[k]);                 }             }          else            {  printf("%c",s[j]);               t=0;            }           j++;        }        printf("\n");     }     return 0;}

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.