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)です。