• 字符串练习


     

    #include <stdio.h>

    //"hello:,:,:world:qian:feng"

    //char *my_strtok(char *string, const char *demi)

    //{

    //    static char *token;

    //    char *str;

    //    if (string) {

    //        str = string;

    //    }

    //    else

    //    {

    //        str = token;

    //    }

    //    

    //    while (*str) {

    //        if (strchr(demi, *str)) {

    //            str++;

    //        }

    //        else

    //        {

    //            break;

    //        }

    //    }

    //    string  = str;

    //    

    //    while (*str) {

    //        if (strchr(demi, *str)) {

    //            *str++ = '';

    //            break;

    //        }

    //        str++;

    //    }

    //    token = str;

    //    

    //    if (str==string) {

    //        return NULL;

    //    }

    //    return string;

    //}

    //int main(int argc,const char *argv[])

    //{

    //    char str[100]="hello:,world:qian:feng";

    //    char *pstr = str;

    //    while ((pstr = my_strtok(pstr, ":,"))) {

    //        printf("%s ",pstr);

    //        pstr = NULL;

    //    }

    //    return 0;

    //}

     

    //字符串排序。比较三个字符串的大小,然后按从小到大的顺序将字符串输出。

    //比如:

    //输入

    //asdfwd

    //ddrwf

    //ffweff

    //输出为

    //asdfwd

    //ddrwf

    //ffweff

    //

    //输入

    //sgfgeasdfw

    //aabbe

    //wrwwdfaf

    //输出为

    //aabbe

    //sgfgeasdfw

    //wrwwdfaf

    /*#include <stdlib.h>

    #include <string.h>

     

    int main(int argc,const char *argv[])

    {

        char *pstr[10]={NULL};

        int cnt = 0;

        for (int i=0; i<10; i++) {

            pstr[i] = calloc(100, 1);

            if (!pstr[i]) {

                return -1;

            }

            scanf("%s",pstr[i]);

            cnt++;

            if (getchar()==' ') {

                break;

            }

        }

        //排序指针数组

        for (int i=0; i<cnt-1; i++) {

            for (int j=0; j<cnt-i-1; j++) {

                if (strcmp(pstr[j],pstr[j+1])>0) {

                    char *temp = pstr[j];

                    pstr[j]=pstr[j+1];

                    pstr[j+1]=temp;

                }

            }

        }

        //打印输出

        

        for (int i=0; i<cnt; i++) {

            printf("%s ",pstr[i]);

        }

        return 0;

    }

    */

     

    //字符串原地压缩。题目描述:“eeeeeaaaff" 压缩为 "e5a3f2"。

    //字符串压缩算法,把s字符串压缩处理后结果保存在res中

    //

    //比如:

    //输入

    //"aaaaeefggg"

    //输出为

    //a4e2f1g3

    //

    //输入

    //hhfhhhhfm

    //输出为

    //h2f1h4h2

     

    /*int main(int argc,const char *argv[])

    {

        char str[100]={};

        char buf[100]={};

        scanf("%s", str);

        char *pstr = str;

        int cnt = 1;

        int len=0;

        while (*pstr) {

            if (*pstr==*(pstr+1)) {

                cnt++;

            }

            else

            {

                len+=sprintf(buf+len, "%c%d",*pstr,cnt);

                cnt=1;

            }

            pstr++;

        }

        printf("%s ", buf);

        return 0;

    }*/

     

    //字符串原地压缩。题目描述:"e5a3f2" 解压缩为 “eeeeeaaaff"。

    //字符串压缩算法,把s字符串压缩处理后结果保存在res中

    //

    //比如:

    //输入

    //a4e2f1g3

    //输出为

    //aaaaeefggg

    //

    //输入

    //h21f1h4h2

    //输出为

    //hhfhhhhff

    #include <ctype.h>

    #include <stdlib.h>

     

    /*int main(int argc,const char *argv[])

    {

        char str[100]={};

        char *buf=NULL;

        char ch[100]={};

        int count[100]={};

        char *pstr = str;

        scanf("%s",str);

        int len=0;

        while (*pstr) {

            sscanf(pstr, "%c%d",&ch[len],&count[len]);

            pstr++;

            while (isdigit(*pstr)) {

                pstr++;

            }

            len++;

        }

        

        int sum =0;

        for (int i=0; i<len; i++) {

            sum+=count[i];

        }

        

        buf = (char *)malloc(sum);

        int cnt=0;

        for (int i=0; i<len; i++) {

            for (int j=0; j<count[i]; j++) {

                buf[cnt++]=ch[i];

            }

        }

        printf("%s ",buf);

     

        return 0;

    }*/

     

    //求一个字符串s的最大连续递增数字子串。

    //

    //

    //比如:

    //输入

    //f123fffwf3212789:abcd

    //输出为

    //123

    //

    //输入

    //abcd765bbw1357f123

    //输出为

    //123

     

    //int main(int argc,const char *argv[])

    //{

    //    char str[200]={};

    //    char *pmax=NULL;

    //    int maxLen=0;

    //    

    //    int cnt=0;

    //    scanf("%s",str);

    //    char *pstr = str;

    //    

    //    while (*pstr) {

    //        if (isdigit(*pstr)) {

    //            cnt=1;

    //            while ((*pstr == *(pstr+1)-1) && isdigit(*(pstr+1))) {

    //                cnt++;

    //                pstr++;

    //            }

    //            if (maxLen < cnt) {

    //                maxLen = cnt;

    //                pmax = pstr-maxLen+1;

    //            }

    //        }

    //        pstr++;

    //    }

    //    if (pmax) {

    //        *(pmax+maxLen)='';

    //        printf("%s ",pmax);

    //    }

    //    return 0;

    //}

     

    //输入一段字符串,把相同的字符按出现顺序,归在一起,并压缩

    //比如:

    //输入 SamSameCome

    //SSamameCome

    //SSaammeCome

    //SSaammmeCoe

    //SSaammmeeCo

     

    //输出:

    //SSaammmeeCo

    //S2a2m3e2C1o1

    //

    //输入 ComeTomeTCoe

    //输出:

    //CCooommeeeTT

    //C2o3m2e3T2

    #include <string.h>

     

    int main(int argc,const char *argv[])

    {

        char str[100]={};

        scanf("%s",str);

        char *pstr = str;

        

        while (*pstr) {

            char *ptemp = pstr+1;

            for (int i=0; *ptemp; i++) {

                if (*pstr == *ptemp) {

                    memmove(pstr+2, pstr+1, ptemp-pstr-1);

                    *(pstr+1)=*pstr;

                }

                ptemp++;

            }

            pstr++;

        }

        printf("%s ",str);

        return 0;

    }

    让明天,不后悔今天的所作所为
  • 相关阅读:
    ASP.NET MVC应用程序更新相关数据
    HTML5 教程
    Nginx+Tomcat+Keepalived+Memcache 负载均衡动静分离技术
    Bootstrap 模态框
    Routing(路由) & Multiple Views(多个视图) step 7
    构建日均千万PV Web站点1
    基础模块
    Visual Studio 换颜色
    动手实现Expression翻译器1
    ASP.NET SignalR 2.0入门指南
  • 原文地址:https://www.cnblogs.com/-yun/p/4273328.html
Copyright © 2020-2023  润新知