演算法--字串
阿新 • • 發佈:2018-11-03
1.實現一個函式,將字串的每個空格替換為“%20” 在原來字串上替換 空間足夠
如果從前往後,當遇見空格時,要替換成%20時,勢必要移動後面所有字元。可以考慮從後往前來處理替換之後字元與原字元的關係,首先計算原來字串中空格數量,由於一個空格替換成3個字元,因此字串長度要變為length + 2 * numSpace
從後往前,當遇見非空格時,直接對應放入,當遇空格時,j指標要移動三次一次放入02%。
public static char[] replaceSpace(char[] arr, int length){ int numSpace = 0; for(int i=0; i<length; i++){ if(arr[i] == ' ') numSpace++; } int j = length + 2 * numSpace - 1; for(int i=length-1; i>=0; i--){ if(arr[i] != ' '){ arr[j] = arr[i]; j--; }else{ arr[j] = '0'; j--; arr[j] = '2'; j--; arr[j] = '%'; j--; } } return arr; }
2.A1,A2兩個陣列,A1容量足夠,將A2放入A1中,讓整體有序
從後到前比較A1與A2的大小關係,放入到對應位置
public static void putArr(int[] A1, int l1, int [] A2, int l2){ int k = l1 + l2 - 1; for(int i=l1-1, j=l2-1; i>=0 || j>=0; ){ if(i<0) A1[k--] = A2[j--]; else if(j<0) A1[k--] = A1[i--]; else if(A1[i]>A2[j]) A1[k--] = A1[i--]; else A1[k--] = A2[j--]; } }