从一个字符串中剔除连续的字符,只留一个。
有两种解决方法。
第一种,从前往后遍历,如果后面的字符与当前的字符相同,就直接跳过,如果不相同,就停止。代码如下:
private String doFilter(String text) { String newText = ""; int i = 0; int j = i+1; newText += text.charAt(i); while(j < text.length()){ if(text.charAt(i) == text.charAt(j)){ j++; }else { i = j; j=i+1; newText += text.charAt(i); } } return newText; }
第二种,是只比较当前字符与前一个字符是否相等,如果相等就删除前一个字符,不相等则直接向下遍历。代码如下:
private String doFilter2(String text) { StringBuffer newText = new StringBuffer(text); for(int i=1;i<newText.length();i++){ if(newText.charAt(i) == newText.charAt(i-1)){ newText.deleteCharAt(i-1); i--; } } return newText.toString(); }
两种方法的时间复杂度与空间复杂度相同。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步