数据结构与算法B代码编写作业,字符串插入,解题报告&AC代码

来源:互联网 发布:吉视传媒网络宽带连接 编辑:程序博客网 时间:2024/06/06 15:54

唔,这道题…还是比较简单的=_____=

遍历第一个字符串找出最大值,将第二个串插进去,把后面的补齐,好啦!

具体算法看AC代码吧…好久没写代码了比较丑……


/*ID: Moien_PodienePROG: STRINGLANG: C++*/#include <iostream>#include <string.h>using namespace std;int main(){    int i, j;    int maxascii, maxloc, buflen;    int len_str, len_substr;    char str[32], substr[16];    char str_buf[32];    while(cin >> str >> substr)    {        maxascii = 0;        buflen = 0;        len_str = strlen(str);        len_substr = strlen(substr);        for(i = 0; i < len_str; i++)        {            if(str[i] > maxascii)            {                maxascii = str[i];                maxloc = i;            }        }        for(i = maxloc + 1; i <= len_str; i++)        {            str_buf[i - maxloc - 1] = str[i];            buflen++;        }        for(i = maxloc + 1; i < maxloc + len_substr + 1; i++)        {            str[i] = substr[i - maxloc - 1];        }        for(i = maxloc + len_substr + 1; i < maxloc + len_substr + 1 + buflen; i++)        {            str[i] = str_buf[i - maxloc - len_substr - 1];        }        str[maxloc + len_substr + 1 + buflen] = 0;        cout << str << endl;    }}

郑脑斯告诉了我一个机智的方法…只用找出ASCII最大值,然后输出之前的,再输出插入的串,再输出后面的就行了……


代码如下:


#include <iostream>#include <string.h>using namespace std;int main(){    int i, j;    int maxascii, maxloc;    int len_str, len_substr;    char str[32], substr[16];    char str_buf[32];    while(cin >> str >> substr)    {        maxascii = 0;        len_str = strlen(str);        len_substr = strlen(substr);        for(i = 0; i < len_str; i++)        {            if(str[i] > maxascii)            {                maxascii = str[i];                maxloc = i;            }        }        for(i = 0; i <= maxloc; i++)        {            cout << str[i];        }        for(i = 0; i < len_substr; i++)        {            cout << substr[i];        }        for(i = maxloc + 1; i < len_str; i++)        {            cout << str[i];        }        cout << endl;    }}

两种方法数据对比如下:


嗯…代码短了一点……


最后,惯例君又来了…原题如下:


描述    有两个字符串str和substr,str的字符个数不超过10,substr的字符个数为3。(字符个数不包括字符串结尾处的'\0'。)将substr插入到str中ASCII码最大的那个字符后面,若有多个最大则只考虑第一个。输入    输入包括若干行,每一行为一组测试数据,格式为    str substr输出    对于每一组测试数据,输出插入之后的字符串。样例输入    abcab eee    12343 555样例输出    abceeeab    12345553




原创粉丝点击