思路:
在替換空格時,從後向前開始進行搬移,因為把乙個字元替換為了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...