來源:牛客網
輸入兩個字符串,從第一字符串中刪除第二個字符串中所有的字符。例如,輸入"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);
}
}