(文字列)には、スペースを置き換えます

、にそれぞれのスペースを置き換えるために、文字列関数を実装してください「20%。」例えば、文字列があるとき、私たちは幸せです。文字列が後に我々%20Are%20Happy交換後。

https://www.nowcoder.com/questionTerminal/4060ac7e3e404ad1a894ef3e17650423

背面から前面への置き換え

二つのポインタ:k個の元の文字列の長さの端を指す(すなわち、「\ 0」で)、P点列の最後の文字から逆方向を横切る、文字列の長さの終了後、「20%」のスペースを置き換えるために、充填に一つずつ場所は、pによって指されます。

O(n)

クラスのソリューション{
 パブリック無効 replaceSpace(CHAR * STR、INT 長){
         int型 CNT = 0 ;
         のためint型 I = 0 ; I <長さI ++ ){ 
//文字列内のスペースの数をカウントする
IF(STR [I ] == ' ' CNT ++ ; } INT LEN =長さ* CNT + 2 ; //元の長さの新しい長さを増大した長さ+交換後 INT K =長さ、P = LEN; ながら(K> = 0 && K < P){ IF(STR [K]! = ' ' ){ STR [I] = STR [K]。 P - ; K - ; } 他の{ STR [P - ] = ' 0 ' STR [P - ] = ' 2 ' STR [P - ] = ' ' K - ; } } } }。

 

要約:バックに前方からのデジタルコピーの各々は、モバイルデジタル複数回繰り返される場合、二つの配列(または文字列)をマージ前方へ後方からコピーと考えることができます。

おすすめ

転載: www.cnblogs.com/Bella2017/p/11819807.html