1.空字串也有可能是input之一
2.找到對應的字元後mark掉
3.照字母順序輸出
網址:
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1193
--------------------------------------------
#include <stdio.h>
#define MAX 1001
#define ASCII 128
int main()
{
int i, j;
char str1[MAX], str2[MAX];
while(gets(str1) && gets(str2) )
{
int table[ASCII] = {0}; /* To store the number of occurrence of every letter. */
for(i = 0; str1[i]; i++)
for(j = 0; str2[j]; j++)
if(str1[i] == str2[j])
{
table[str2[j] ]++;
str2[j] = '0'; /* Avoid double counting.*/ /* mark */
break;
}
for(i = 'A'; i <= 'z'; i++) /* Alphabetically output. */
for(; table[i]; table[i]--) /* Print according to value. */
printf("%c", i);
printf("\n");
}
return 0;
}
-2015-05-22-----------------------------------------
package test;
import java.util.*;
public class main {
public static void main(String[] args) {
try {
final Scanner in = new Scanner(System.in);
while (in.hasNextLine()) {
ArrayList al = new ArrayList();
char[] chArrA = in.nextLine().replaceAll(" ", "").toCharArray();
char[] chArrB = in.nextLine().replaceAll(" ", "").toCharArray();
int idx;
for (int i = 0; i < chArrA.length; i++) {
// 有找到
if (((idx = indexOf(chArrB, chArrA[i])) != -1) && (chArrB[idx] != ' ')) {
char ch = chArrB[idx];
al.add(ch);
// 設成其它字元以免再次找到
chArrB[idx] = ' ';
}
}
al.sort(new Comparator() {
@Override
public int compare(Object o1, Object o2) {
return ((char) o1) - ((char) o2);
}
});
for (Object ob : al) {
System.out.print("" + ob.toString());
}
System.out.println("");
}
in.close();
} catch (Exception e) {
e.printStackTrace();
}
}
private static int indexOf(char[] chArr, int ch) {
for (int i = 0; i < chArr.length; i++) {
if (chArr[i] == ch) {
return i;
}
}
return -1;
}
}