String 字符串中查找相同字母 并输出出来

pai_zi 2018-03-15 12:21:04
这两天面试正好遇到一个面试题挺有意思的,那位大神有比较好的方式来完成操作?
/*
*要求查找由相同字母组成的数据并去除重复元素,输出出来。
* 例如:
* "top,opt,pto"
* "hi,ih"
* "data"
* "awerf"
* "igndytb"
* */
public static void main(String[] args) {
String testData = "top,hi,opt,top,data,ih,pto,awerf,igndytb";




}
...全文
1055 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuPeng_0930 2018-03-15
  • 打赏
  • 举报
回复
引用 3 楼 Ragin 的回复:
[quote=引用 1 楼 liuPeng_0930 的回复:]
这题目有点模糊 “topo”与"opt"这种情况也算由相同的字母组成吧 你这个方法就不适用[/quote] 把22行替换成这几行就行了
Set<String> set = new HashSet<String>();
		  	for(char c:data){
		  		set.add( String.valueOf(c));
		  	}
		  	String def =  String.valueOf(set);
Braska 2018-03-15
  • 打赏
  • 举报
回复
引用 1 楼 liuPeng_0930 的回复:
这题目有点模糊 “topo”与"opt"这种情况也算由相同的字母组成吧 你这个方法就不适用
心随念 2018-03-15
  • 打赏
  • 举报
回复
和一楼的相似。只是把map换成HashSet也可以。 也是先排序,然后放入HashSet即可
liuPeng_0930 2018-03-15
  • 打赏
  • 举报
回复
	public static void main(String[] args) {
		
		testData();
	}
	
	/**
	    *要求查找由相同字母组成的数据并去除重复元素,输出出来。
	    * 例如:
	    * "top,opt,pto"
	    * "hi,ih"
	    * "data"
	    * "awerf"
	    * "igndytb"
	    * */
	public static void testData(){
		  String testData = "top,hi,opt,top,data,ih,pto,awerf,igndytb";
		  String[] arry = testData.split(",");
		  Map<String, Object> map = new HashMap<String, Object>();
		  for(String str : arry){
			  char[] data =str.toCharArray();
			  Arrays.sort(data);       
	           String def =  String.valueOf(data);	
	            		
	            if(map.containsKey(def)){
	                String value = map.get(def).toString();
	                if(!value.contains(str)){
	                	value = value +"," + str;
	 	                map.put(def, value);
	                }
	               
	            }else{
	                map.put(def,str);
	            }
	        }
		  
		  for(String key :map.keySet()){
			  System.out.println(map.get(key).toString());
		  }
	}

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧