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

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

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

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


/*
ID: Moien_Podiene
PROG: STRING
LANG: 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





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值