字符串中字符删除ac和b
2017-11-23 23:38
736 查看
问题
一个字符串,其中只有小写的字母,按条件删除
1、当字符串中有ac挨着的情况下,把ac删除
2、当字符串中有b 把b删除
3、最好只遍历一次
Analyse
想一想要从字符串里面删除字符,但是又要移动字符的话好麻烦,首先考虑到StringBuilder类,使用这个类就比较简单了
源代码
另一种方法——字符数组法
嗯,对滴,就这些了
一个字符串,其中只有小写的字母,按条件删除
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); }
嗯,对滴,就这些了
相关文章推荐
- leetcode——Remove Duplicates from Sorted List II 删除排序字符串中重复字符(AC)
- 删除一字符串的出现的字符子串
- ASP 删除字符串开始或/和末尾处指定字符(串)
- 【剑指offer】删除在另一个字符串中出现的字符
- js 删除字符串最后一个字符的方法
- C语言删除字符串中的指定字符,字符串连接
- 怎么利用javascript删除字符串中的最后一个字符呢?
- 删除字符串中重复的字符
- 删除字符串中指定字符
- 如何删除字符串中重复的字符
- 【华为OJ23】删除字符串中出现次数最少的字符
- 删除字符串中特定字符
- 从键盘输入一个字符串,按照字符顺序从小到大进行排序,并要求删除重复的的字符。
- 哈希表对字符串的高效处理4:删除字符串中重复出现的字符
- 字符串面试题系列之六:在字符串中删除特定的字符
- 给定两个字符串,从A中删除存在于B中的字符
- 删除字符串最后一个字符的方法
- 删除字符串中重复字符。
- jquery 删除字符串最后一个字符的方法解析
- 删除重复的字符(给一个字符串,删除连续重复的字符,要求时间复杂度为O(1)……)