Making Anagram
Alice最近開(kāi)始研究密碼學(xué),她發(fā)現(xiàn)變形詞非常有用。兩個(gè)字符串互為變形詞,如果它們具有相同的字符。例如,字符串bacdc和 dcbac互為變形詞, 而字符串bacdc和"dcbad則不是。
Alice決定采用一種加密方法,它依賴(lài)于使得兩個(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只包含小寫(xiě)的字母。
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));
}
}