1. 程式人生 > >ACM經典演算法之字串處理

ACM經典演算法之字串處理

一、(字串替換)


語法:replace(char str[],char key[],char swap[]);

引數:

str[]:

在此源字串進行替換操作

key[]:

被替換的字串,不能為空串

swap[]:

替換的字串,可以為空串,為空串表示在源字元中刪除key[]

返回值:

null

注意:

預設str[]長度小於1000,如否,重新設定設定tmp大小

需要 string.h

源程式:

void replace(char str[],char key[],char swap[]){int l1,l2,l3,i,j,flag;

char tmp[1000];    l1=strlen(str);    l2=strlen(key);    l3=strlen(swap);for (i=0;i<=l1-l2;i++)        {        flag=1;for (j=0;j<l2;j++)if (str[i+j]!=key[j]) {flag=0;break;}if (flag)            {            strcpy(tmp,str);            strcpy(&tmp[i],swap);            strcpy(&tmp[i+l3],&str[i+l2]);
            strcpy(str,tmp);            i+=l3-1;            l1=strlen(str);            }        }}


二、

(字串查詢)

語法:result=strfind(char str[],char key[]);

引數:

str[]:

在此源字串進行查詢操作

key[]:

被查詢的字串,不能為空串

返回值:

如果查詢成功,返回key在str中第一次出現的位置,否則返回-1

注意:

需要 string.h

源程式:

int

 strfind(char str[],char key[]){int l1,l2,i,j,flag;    l1=strlen(str);    l2=strlen(key);for (i=0;i<=l1-l2;i++)        {        flag=1;for (j=0;j<l2;j++)if (str[i+j]!=key[j]) {flag=0;break;}if (flag) return i;        }return -1;


三、(字串擷取)

語法:mid(char str[],int start,int len,char strback[])

引數:

str[]:

操作的目標字串

start:

從第start個字串開始,擷取長度為len的字元

len:

從第start個字串開始,擷取長度為len的字元

strback[]:

擷取的到的字元

返回值:

0:超出字串長度,擷取失敗;1:擷取成功

注意:

需要 string.h

源程式:

int mid(char str[],int start,int len,char strback[]){int l,i,k=0;    l=strlen(str);if (start+len>l) return 0;for (i=start;i<start+len;i++)        strback[k++]=str[i];    strback[k]='\0';return 1;