日常刷題之刪除公共字符

鏈接:https://www.nowcoder.com/questionTerminal/f0db4c36573d459cae44ac90b90c6212

來源:牛客網
輸入兩個字符串,從第一字符串中刪除第二個字符串中所有的字符。例如,輸入"They are students."和"aeiou",則刪除之後的第一個字符串變成”Thy r stdnts.”
輸入描述:
每個測試輸入包含2個字符串
輸出描述:

輸出刪除後的字符串

首先,分析題意。不難看出兩個字符比較,我們可以將字符串轉化爲字符數組,並建立一個整型數組的中間量用來標記較短數組。再者,較短數組的值作爲中間量數組的下標(由於數組從零開始,而題意中輸入的字符均是字母和空格,空格的ASCII碼值爲32;字母的ASCII值從65到122,所以中間量數組的長度爲:122-32=90;所有字符均減32)然後用中間量數組和較長數組進行比較。最後,中間量數組下標爲較長數組的值不爲0(整型數組默認爲零)即可將該字符添加到結果中去。

代碼如下:

import java.util.Scanner;
//笨人的解題思路,如有不對,敬請諒解.phone:18845636132
public class Main
{
    public static void main(String[] args)
    {
        Scanner in = new Scanner(System.in);
        String str1 = in.nextLine();
        String str2 = in.nextLine();
        //有空格,空格到‘z’的距離90
        int[] strs = new int[90];
        //獲得較小的字符串數組
        char[] temp0 = (str1.length()>=str2.length()?str2:str1).toCharArray();
        //存在即加1
        for(char s:temp0) {
            strs[s-32]++;
        }
        String result = "";
        //獲得較大數組
        char[] temp1 = (str1.length()>str2.length()?str1:str2).toCharArray();
        for(char s: temp1) {
            //如果strs對應位數爲零,則將該數加入到結果中
            if(strs[s-32]==0) {
                result = result+s;
            }
        }
        System.out.println(result);
    }
}

發佈了35 篇原創文章 · 獲贊 26 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章