JAVA 刪除字串裡指定字元
阿新 • • 發佈:2019-02-12
/**
*1將字串中"ac"刪除
*2將字串中"b"刪除
*3最好只有一次遍歷
* @author lenovo
*
*/
標準答案,,,還是老師的思路牛X,看完程式碼五體投地
改進思路:陣列cs[],遍歷,滿足條件的賦給targets[],不滿足條件的剔除
public static void main(String[] args) {int k=0;
String str="aabbbbbbbccabcasdfghjk";
char cs[]=str.toCharArray();
char targets[]=new char[cs.length];
for(int i=0;i<cs.length;i++){
if(cs[i] != 'b'){
if(cs[i] != 'c' ){
targets[k]=cs[i];
k++;
}else if(k!=0 &&targets[k-1] =='a'){
k--;
}
}else{
}
}
String str1=new String(targets,0,k);
System.out.println("------------>"+str1);
}
}
最初做題時遇到的問題:如何能夠只進行一次遍歷
自己寫的程式碼: (後邊元素前置時用到無數次遍歷)
package com.zzuqg.java10.follow;// 思路: 字串中尋找最長子字串,, asdfghjsd
// 遇到的問題:輸出資料出現錯位 解決方法:用dataIndex替換cs.length
public class Work1 {
public static void main(String[] args) {
String str="abcdefg";
int dataIndex;
char[] cs=str.toCharArray();
dataIndex=cs.length;//7
for(int i=0;i<dataIndex;i++){
if(cs[i]=='b'){ //查詢'b'在字元陣列中的位置
for(int j=i;j<dataIndex-1;j++){ //'b'後面的元素逐個往前移動
cs[j]=cs[j+1];
}
dataIndex--;
if( i!=0 && cs[i-1]=='a' && cs[i]== 'c' ){ //尋找'ac'的位置
for(int j=i-1;j<dataIndex-2;j++){ //刪除'ac'
System.out.println("....");
cs[j]=cs[j+2];
}
dataIndex -= 2;
}else{
}
}
if(cs[i]=='a' && cs[i+1]=='c'){ //遇到的問題:該段if判斷語句輸出結果不正確 解決方法:將 || 換為 &&
for(int j=i;j<dataIndex-2;j++){
cs[j]=cs[j+2];
}
dataIndex -=2;
}
}
for(int i=0;i<dataIndex;i++){
System.out.println(cs[i]);
}
}
}