文字列sの各スペースをパーセント記号20に置き換える関数を実装してください。

1.文字列sの各スペースを「%20」に置き換える関数を実装してください。

例1:

入力:s = "We are happy。"
出力: "We%20are%20happy。"

制限:

0 <= sの長さ<= 10000

2.コード表示

char* replaceSpace(char* s)
{
    int count = 0;
    int len = strlen(s);
    for (int i=0; i<len; i++)
    {
        if (s[i] ==' ')
        {
            ++count;
        }
    }
    char* arr = (int *)malloc(sizeof(int)*(len+2*count));
    arr[len+2*count]=0;
    count=0;
    for(int i=0; i<len; i++)
    {
        if (s[i] != ' ')
        {
            arr[i+count]=s[i];
        }
        else
        {
          
            arr[i+count] = '%';
            arr[i+1+count] = '2';
            arr[i+2+count] = '0';
            count+=2;
        }
    }
    return arr;
}

3.問題を解決するというアイデアは
、配列を直接走査し、スペースの数を数え、新しい配列を開きます。新しい配列の最後に0を置きます。これは実際には\ 0です。次に配列を走査します。スペースが必要な場合は、後ろの数を2に割り当てます0、次に配列のトラバースを続行します。割り当て後の新しい配列の位置に注意してください。また、%2 0は3文字です。
時間の複雑さはO(n)、空間の複雑さはO(n)です。

公開された84元の記事 ウォンの賞賛6 ビュー4725

おすすめ

転載: blog.csdn.net/qq_41152046/article/details/105438953