目的:在一组字符串中求不相同的字符串个数
采用什么判断是否重复?HashMap不会存相同的
HashMap判断两元素是否相同的标准:1. hashcode 2.equals方法
equals方法:若没有重写Object中的equals方法,则两元素指向同一个地址才算相同;
若重写过equals方法,根据方法规定的判断是否相同。
String重写了equals方法,判断方法为判断两元素的值是否相同,因此HashSet不可以放入两个值相同的字符串;
StringBuffer没有重写,因此两个地址不同,值相同的StringBuffer对象可以均放入HashSet中。代码如下:(一开始设置morse存储StringBuffer结果什么都没有滤掉。。。)
class Solution {
public int uniqueMorseRepresentations(String[] words) {
String[] dire= {".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."};
HashSet<String> str= new HashSet<String>();
HashSet<String> morse= new HashSet<String>();
for(String s: words){str.add(s);}
for(String s: str){
StringBuffer tmp= new StringBuffer();
for(int i=0; i<s.length(); i++){
tmp.append(dire[s.charAt(i)-'a']);
}
morse.add(tmp.toString());
}
return morse.size();
}
}