一,問題描述:
給定一個字符串,將字符串中連續的多個空格替換成一個空格。
如:"Hello World I come from china"----->"Hello World I come from china"
二,思路:
逐個字符掃描字符串,遇到連續多個空格時,只添加第一個空格。遇到非空格字符時,添加該字符。使用StringBuilder的add()方法添加字符。
需要一個boolean 變量指示是否是第一個空格。當遇到空格且該空格是第一個空格時,需要 添加到StringBuilder
如果遇到非空格字符,需要添加到StringBuilder並將boolean 重置為"不是第一個空格"
若要考慮字符串開頭或結尾有空格的情形,可先用 String.trim()刪除開頭和結尾空格。
三,代碼如下:
1 public class ReplaceWithSingleCharacter { 2 3 public static void main(String[] args) { 4 String r = repaceWhiteSapce("Hello world I come from china"); 5 System.out.println(r); 6 } 7 public static String repaceWhiteSapce(String original){ 8 StringBuilder sb = new StringBuilder(); 9 boolean isFirstSpace = false;//標記是否是第一個空格 10 11 // original = original.trim();//如果考慮開頭和結尾有空格的情形 12 13 char c; 14 for(int i = 0; i < original.length(); i++){ 15 c = original.charAt(i); 16 if(c == ' ' || c == '\t')//遇到空格字符時,先判斷是不是第一個空格字符 17 { 18 if(!isFirstSpace) 19 { 20 sb.append(c); 21 isFirstSpace = true; 22 } 23 } 24 else{//遇到非空格字符時 25 sb.append(c); 26 isFirstSpace = false; 27 } 28 } 29 return sb.toString(); 30 } 31 }
