Making Anagram
Alice最近開始研究密碼學(xué)荞彼,她發(fā)現(xiàn)變形詞非常有用站绪。兩個(gè)字符串互為變形詞贴唇,如果它們具有相同的字符。例如栋艳,字符串bacdc
和 dcbac
互為變形詞, 而字符串bacdc
和"dcbad
則不是恰聘。
Alice決定采用一種加密方法,它依賴于使得兩個(gè)大字符串成為變形詞最少所要?jiǎng)h除字符的字符總數(shù)吸占。她需要你的幫助計(jì)算這個(gè)數(shù)晴叨。
給定兩個(gè)字符串,幫助她計(jì)算出需要?jiǎng)h除的最少字符數(shù)使它們成為變形詞矾屯,兩個(gè)字符串中的任意字符都可以被刪除兼蕊。
輸入格式
兩行,每行包含一個(gè)字符串A和B件蚕。
約束條件*
1 <= A,B的長(zhǎng)度 <= 10000
A和B只包含小寫的字母孙技。
Output Format
一個(gè)整數(shù)惧所,表示最少刪除的字母?jìng)€(gè)數(shù)。
輸入樣例:
cde
abc
輸出樣例 :
4
解釋 :
我們需要?jiǎng)h掉4個(gè)字符使它們成為變形詞绪杏,從第一個(gè)字符串中刪掉 ‘d’和 ‘e’,從第二個(gè)字符串中刪掉 'b' 和 ‘a(chǎn)’纽绍。
** Java Solution **
import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;
/*Using ACSII
If the input is not ASCII, the size of alphabet will be different
*/
public class Solution {
public static int numberNeeded(String first, String second) {
int[] alphabet = new int[26];
for(int i=0;i<first.length(); i++){
//Add the number of each character
alphabet[first.charAt(i)-'a']++;}
for(int i=0;i<second.length(); i++){
//minus the character in the second String
alphabet[second.charAt(i)-'a']--;}
int ret = 0;
// m may be smaller than zero, so using Math.abs
for (int m: alphabet) ret += Math.abs(m);
return ret;
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String a = in.next();
String b = in.next();
System.out.println(numberNeeded(a, b));
}
}