string去除重复字符两个方法
2016-09-20 21:54
218 查看
string去除重复字符
今天面试遇到,使用了第一种,回来记录了下,觉得一般可能不是这样解的。想了第二种,还是觉得不妥,这里都贴出来。
网上有很多伪方法,只删除了相邻重复字符串,大家警惕!
主要使用list.contains()检测重复。
一直在想本来应该怎样做,因为面试官说了句只用了一层循环,可能这样是比较通用的:
1、charAt遍历String每个字符(第一层循环)
2、charAt遍历StringBuffer每个字符,如果没有就加进去(第二层循环)
今天面试遇到,使用了第一种,回来记录了下,觉得一般可能不是这样解的。想了第二种,还是觉得不妥,这里都贴出来。
网上有很多伪方法,只删除了相邻重复字符串,大家警惕!
主要使用list.contains()检测重复。
一直在想本来应该怎样做,因为面试官说了句只用了一层循环,可能这样是比较通用的:
1、charAt遍历String每个字符(第一层循环)
2、charAt遍历StringBuffer每个字符,如果没有就加进去(第二层循环)
import java.util.*; public class Main06 { public static void main(String[] args) { // TODO Auto-generated method stub String str = "kjkljklhuionsd"; System.out.println(sub(str)); System.out.println(sub1(str)); } //方法1 static String sub(String str){ StringBuffer result = new StringBuffer(); List list = new ArrayList(); char[] cs = str.toCharArray(); for(int i=0; i<cs.length; i++){ if(!list.contains(cs[i])){ result.append(cs[i]); list.add(cs[i]); } } return result.toString(); } //方法2 static String sub1(String str){ List list = new ArrayList(); StringBuffer sb = new StringBuffer(str); int j=0; for(int i=0; i<str.length(); i++){ if(list.contains(str.charAt(i))){ sb.deleteCharAt(i-j); //String 是没有delete方法的 j++; //因为删除了sb中的字符,有一个偏移 }else{ list.add(str.charAt(i)); } } return sb.toString(); } }
相关文章推荐
- C# 使用String.Join 和 Distinct 方法 去除字符串中重复字符
- String.Join 和 Distinct 方法 去除字符串中重复字符
- c# String.Join 和 Distinct 方法 去除字符串中重复字符
- Android String字符串去除指定两个字符串范围内的字符
- [面试题]去除字符串中相邻两个字符的重复
- C语言去除相邻重复字符函数的实现方法
- 去除除服串中的某些字符,不用String内置方法
- 去除字符串中的重复字符——方法汇总和性能测试
- 去除字符串中的重复字符——方法汇总和性能测试
- String字符串按多个字符Split方法
- 两个String的比较(长度相同,含有相同的字符就相等)
- 【原创】打印一个string 字符串中重复字符的次数
- jQuery Trim去除字符串首尾空字符实现方法
- 去除sql server中重复的数据--完全相同的记录方法
- String.split方法分隔特殊字符"/"
- 【求助】寻求去除数据库字段中存放重复内容的最佳方法
- js 去除字符串中重复的字符
- Request.QueryString如果接到空值,则返空字符方法
- SQL 截取字符串,中文算两个字符的方法
- JAVA面试题之String处理--一字符取出重复的字符以及其个数