JAVA 删除字符串里指定字符


/**
 *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]);
}
}
}




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值