替換空格 舉一反三

2021-09-26 07:39:33 字數 1760 閱讀 2102

思路:

在替換空格時,從後向前開始進行搬移,因為把乙個字元替換為了3個字元,所以陣列的長度會變長,替換後陣列的長度=空格的數量*2+替換之前陣列的長度,要注意記憶體覆蓋。

給兩個標記,tailoldlength標記原陣列(替換之前的陣列)的最後乙個元素,tailnewlength標記新陣列(替換之後的陣列)的最後乙個元素,在tailoldlength沒有遇到空格之前,把tailoldlength標記的元素搬移到tailnewlength標記的位置,搬移之後,tailoldlength和tailnewlength都向前移動,當tailoldlength遇到空格後,tailoldlength向前移動一步,把tailnewlength標記的位置依次寫入"%20",在寫的過程中,每寫乙個字元,tailnewlength向前移動一步,迴圈這個過程,直到把所有空格替換完成

**實現:

void replace(char arr,int size)

int i = 0;

int count = 0;

int oldlength = 0;//陣列實際長度

int newlength = 0;//替換後的陣列長度

while(arr[i] != '\0')

++oldlength;

++i;

} int tailoldlength = oldlength;//原陣列最後乙個元素

newlength = oldlength + count * 2;//新陣列=原陣列長度+空格*2

int tailnewlength = newlength;//新陣列最後乙個元素

if(newlength < oldlength) return;

while(tailnewlength >= 0 && tailnewlength > tailoldlength)

else

tailoldlength--; }}

int main()

printf("\n");

return 0;

}

題目描述:函式將字串中的字元'*'移到字串的前部分,前面的非'*'字元後移,但不能改變非'*'字元的先後順序,函式返回串中非'*'字元的數量。(要求盡可能的占用少的時間和輔助空間)。

例如:原始串為au**toc**h**i*ps,處理後為*******autochips,函式返回9.

**時間較容易,大致思路:

結果:

思路:遍歷a不是空格就輸出往後走,是空格的列印乙個空格,然後繼續走到不是空格為止,中間不在列印**:

int main() 

} else//如果字元不是空格直接輸出並向後遍歷

}printf("\n");

return 0;

}

模型實現舉一反三

在很長一段時間裡,大家都對深度學習模型有所誤解,認為模型需要非常大量的資料訓練,且只能過訓練過的模式起作用 用貓的資料訓練就只能識別貓,只有在訓練資料中多次出現的模式才能被模型學習和應用,稍有變化,模型就無法正常工作。實際上隨著深度學習模型的發展,這些問題都在逐步改善。現在很多模型學習的不僅是解決具...

php上傳思路很重要 舉一反三

1 form標籤enctype屬性 表單中enctype multipart form data 的意思,是設定表單的mime編碼。預設情況,只有使用了multipart form data,才能完整的傳遞檔案資料 input標籤 type 屬性中的 file 2 files 系統函式 files ...

舉一反三 最長連續子串問題

給定一串行,如,求其連續子串行的和能被k整除的子串行的最長長度.注 連續子串行,即在序列中連續訪問的數.序列,其滿足條件的序列為,故滿足條件的最長子串行為,長度為5.思路1 滑動視窗的思想,遍歷全部子串行.如下 解法1 遍歷所有的子串行,滑動視窗的思想 private static int find...