Cracking the Interview - Strings

Making Anagram

Alice最近開(kāi)始研究密碼學(xué),她發(fā)現(xiàn)變形詞非常有用。兩個(gè)字符串互為變形詞,如果它們具有相同的字符。例如,字符串bacdcdcbac互為變形詞, 而字符串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));
    }
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容