リニアテーブルのデータ構造Review--運動(中列)

クリエイティブコモンズライセンス 著作権:帰属、紙ベースを作成するために他人を許可し、(同じライセンスで元のライセンス契約に基づいて用紙配布する必要がありますクリエイティブコモンズ

トピック出典:MOOCの中国大学- 「データ構造とアルゴリズム」北京大学-第II章線形計画の割り当てテーブル

図1に示すように、文字列に挿入された(10分)

タイトル内容:

2 SUBSTR文字列strと文字の数がありますが、STRとSUBSTRは小文字と数字のみを備え、10 ^ 5を超えることはできません。(文字列の末尾の文字の数「\ 0」は含みません。)ASCIIコードstrの中で、その文字の後ろに挿入された最大のsubstrは、まず、複数のが唯一の最大の考慮します。

入力フォーマット:入力データは、フォーマットのstr SUBSTRで、一行だけです

出力フォーマット:挿入後の文字列を出力。

 

サンプル入力: abcab EEE

出力例: abceeeab

 

時間制限:500msのメモリ制限:32000キロバイト

思考:文字の最大数が決定されるので、シーケンステーブルを格納し、データ処理のために使用することができます。

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>

using namespace std;

const int MAX_LEN = 10000;

void solution();

int main()
{
    int T = 0;
    int t = 0;

    T = 1;
    while (t < T)
    {
        solution();
        t++;
    }

    system("pause");
    return 0;
}

void solution()
{
    char str[MAX_LEN], substr[MAX_LEN];
    int maxPos = 0;
    int len1 = 0;
    int len2 = 0;
    cin >> str >> substr;
    len1 = strlen(str);
    len2 = strlen(substr);
    //查找ASCII码最大字符所在位置
    for (int i = 1; i < len1; i++)
    {
        if (str[i] > str[maxPos])
        {
            maxPos = i;
        }
    }
    //该字符后所有字符后移len2位
    for (int i = len1; i >= maxPos + 1; i--)
    {
        str[i + len2] = str[i];
    }
    //将substr插入至str之后
    for (int i = 0; i < len2; i++)
    {
        str[i + maxPos + 1] = substr[i];
    }

    cout << str << endl;
}

 

おすすめ

転載: blog.csdn.net/kingslave1/article/details/93708714