题目:
翻译:
题目的意思是,将字符串s随意打乱后,在任意位置加入一个别的字符,然后形成字符串t,找出t中比s中多出来的那一个字符
思路:
其实我之前做这道题目用的cpp,用hashmap,key值为字符,value为该字符的出现次数,但是java好像不能自动统计,不过每次put如果key值相同,那个新的value可以覆盖旧的value值的。因此我做这道题目的思路就是,先把s中的每个字符做一个统计,然后再遍历t,如果s中没有该字符,那个这个字符就是多加的那个;如果有,就出现一次,对应value值减一,如果该字符又出现了,但是value == 0,那么就证明这个字符是多出来的。
代码:
import java.util.HashMap;
import java.util.Map;
public class findTheDifference389 {
public static char findTheDifference(String s,String t){
// char ch;
Map<Character, Integer> sMap = new HashMap<>();
char[] sArray = s.toCharArray();
char[] tArray = t.toCharArray();
for(Character ch : sArray){
if(sMap.containsKey(ch)){
sMap.put(ch, sMap.get(ch)+1);
}else sMap.put(ch,1);
}
for(Character ch : tArray){
if(!sMap.containsKey(ch)){
return ch;
}else{
if(sMap.get(ch) > 0){
sMap.put(ch, sMap.get(ch) - 1);
}else{
return ch;
}
}
}
return ' ';//这个是用来返回值的,正常的运行不会走到这一步
}
public static void main(String[] args) {
// TODO Auto-generated method stub
String s = "bcffad";
String t = "cabffcd";
System.out.println(findTheDifference(s,t));
}
}