【普通算法】字符串字符及个数一致比较

来源:互联网 发布:姚明和奥尼尔对决数据 编辑:程序博客网 时间:2024/06/16 06:48

两句话:说实话,我之前两年疏于写代码,所以基本语法及简单算法都遗漏,故希望每日勤勉。
背景:2017年7月参加亚信面试题
题目如下:假设英文字符串aba与aab(或baa)相等(字符及个数一样),请比较两个不同的字符串是否相等。
解答:

import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.Map.Entry;import java.util.Set;import java.util.TreeSet;public class CompareString {    static List<String> total= new ArrayList<String>();    public static void main(String[] args) {        String a="cbabcbabaacacaabc";        String b="cbabcbabaacacaba";        Set resultSet = new TreeSet();        CompareString cs = new CompareString();        Map<String,Integer> camap=cs.count(a);        Map<String,Integer> cbmap=cs.count(b);        boolean flag =false;        for(String bbb:total){            if(camap.get(bbb)!=cbmap.get(bbb)){                System.out.println(camap.get(bbb)+"vs"+cbmap.get(bbb));                break;            }            flag=true;        }        System.out.println("字符串对比结果-->"+flag);    }    public Map count(String tmp){        Map<String,Integer> map = new HashMap<String,Integer>();        for(int  i=0;i<tmp.length();i++){            String c = (String)(tmp.charAt(i)+"");            if(map.get(c)==null){                map.put(c, 1);                total.add(c);            }else{                map.put(c, (int)map.get(c)+1);            }        }//      for(Entry<String,Integer> e :map.entrySet()){//          System.out.println(e.getKey()+""+e.getValue());//      }        return map;    }}

扩展:
1、如果字符从文件读取特别长,如何提交效率,欢迎探讨?
分布式算法是不是可以解决这个问题?mapreduce的工作原理是什么、现在流行的处理日志的大数据的框架是如何工作?

阅读全文
0 0
原创粉丝点击