字符串中字符删除ac和b
来源:互联网 发布:南平广电网络招聘 编辑:程序博客网 时间:2024/06/06 03:31
- 问题
一个字符串,其中只有小写的字母,按条件删除
1、当字符串中有ac挨着的情况下,把ac删除
2、当字符串中有b 把b删除
3、最好只遍历一次 Analyse
想一想要从字符串里面删除字符,但是又要移动字符的话好麻烦,首先考虑到StringBuilder类,使用这个类就比较简单了源代码
public class Interview { public static void main(String[] args) { String string="abbbbcaabbccasdjlfkja"; StringBuilder sb=new StringBuilder(string); int i=0; while(i<sb.length()){ if(sb.charAt(i)=='b'){ //发现b sb.delete(i, i+1); //删除 if(i>=1) i--; } else{ if(i<sb.length()-1) if(sb.charAt(i)=='a'&&sb.charAt(i+1)=='c'){ //发现ac sb.delete(i, i+2); //删除 if(i>=1) i--; continue; } i++; } } System.out.println(sb.toString()); }}
- 另一种方法——字符数组法
static void deal() { String str = "abbbbcaabbccasdjlfkja"; char[] cs = str.toCharArray(); char[] targetCs = new char[cs.length]; int k = 0; for (int i = 0; i < cs.length; i++) { if (cs[i] != 'b') { //检测到b直接跳过 if (cs[i] != 'c') { //非c则进入新数组 targetCs[k] = cs[i]; k++; } else { if (k != 0 && targetCs[k - 1] == 'a') {//检测到是c,再检查上个进入新数组的是否为a,如果是,则指向退一,把a覆盖,同时检测边界 k--; } else { //上一个进入的不是a,则c进入 targetCs[k] = cs[i]; k++; } } } } String targetStr = new String(targetCs, 0, k); System.out.println(targetStr); }
- 嗯,对滴,就这些了
阅读全文
0 0
- 字符串中字符删除ac和b
- 删除字符串中的“b”和“ac”
- [各种面试题] 删除字符中的b和ac
- 从字符串A中删除字符串B的所有字符
- 华为笔试—在字符串A中删除字符串B中的全部字符
- 删除字符串中重复字符
- 删除字符串中重复字符
- 字符串中删除固定字符
- 删除字符串中特定字符
- 删除字符串中重复字符
- 删除字符串中重复字符
- 从字符串中删除字符
- 字符串中删除特定字符
- 删除字符串中最少字符
- 删除字符串中连续字符
- 字符串中删除指定字符
- 删除字符串中重复字符
- 删除字符串中某个字符
- MySQL数据库应用(DDL/DML/DCL)
- 面向对象编程范式##第三章面向对象编程范式
- 20171123
- 【Scikit-Learn 中文文档】集成方法
- PHP基础(1)
- 字符串中字符删除ac和b
- php中的字符串
- ListView的Item点击事件无响应
- SQL Server字符串
- 【Scikit-Learn 中文文档】多类和多标签算法
- Java面试之框架篇(九)
- 个人知乎 ##基础一-项目介绍
- 常见编码方式之间的区别
- 【Scikit-Learn 中文文档】特征选择