给定一个char array, 这个array是一个句子,然后给定一个字母,把这个array里面带有这个字母开头的单次删掉,操作是要求in place.
检测 array[i]==' ' && i<array.length-1 && array[i+1]==target,这种情况,设置j从i+1开始直到找到下一个‘ ’或者到达末尾,然后中间的全部删掉,i从j开始
特别要注意第一个char是target的情况
package DeleteWordsStartByCertainChar; import java.util.*; public class Solution {
public char[] modify(char[] array, char tar) {
if (array==null || array.length==0) return new char[0];
int index=0;
int i=0;
for (; i<array.length; i++) {
if (i==0 && array[i]==tar || array[i]==' ' && i<array.length-1 && array[i+1]==tar) {
int j = i+1;
while (j<array.length && array[j]!=' ') j++;
i = j;
i--;
}
else array[index++] = array[i];
}
char[] res = Arrays.copyOf(array, index);
return res;
} /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Solution sol = new Solution();
char[] array = "ab big ball bis brunning b ".toCharArray();
char[] res = sol.modify(array, 'b');
System.out.println(res);
} }