Python版本
AC,四个测试点全部通过。
line1 = list(raw_input())
line2 = list(raw_input())
dict ={}
for c in line1:
if c>='A' and c<='Z':
dict[c.lower()]=c.lower()
dict[c]=c
s=''
for c in line2:
if (dict.get(c,-3)==-3):
if c>='A' and c <='Z' and dict.get('+',-3)!=-3:
continue
s+=c
print s
Java版本
注意!Java这里有三个版本:
1、一个运行超时
2、一个内存超限
3、最后一个AC全部通过
分析原因:
1、运行超时。因为,每一次循环都有一个System.out.print(),而这是很耗时间的。
2、内存超限。改进,去除循环中的System.out.print(),用一个String变量s,然后s+=temp,最后一次性输出System.out.println(s),不再超时,但内存超限。
因为每次s+=temp,会在常量池中找,找不到,每次new一个String,导致内存超限
3、AC。将用String变量s,然后s+=temp的方法,改为用StringBuilder变量sb,进行sb.append()
1、Java版本,最后一个测试点超时。
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner sc =new Scanner(System.in);
char[] arr1 = sc.nextLine().toCharArray();
char[] arr2 = sc.nextLine().toCharArray();
int[] arr =new int[10000];
for(int i =0;i
char temp = arr1[i];
arr[temp]=1;
if(temp>= 'A' && temp <= 'Z'){
arr[temp+32]=1;
}
}
for(int i =0;i
char temp = arr2[i];
if(arr[temp]==0){
if( temp >='A' && temp<='Z' && arr['+']==1){
continue;
}
System.out.print(temp);
}
}
}
}
2、Java版本,最后一测试点,内存超限
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner sc =new Scanner(System.in);
char[] arr1 = sc.nextLine().toCharArray();
char[] arr2 = sc.nextLine().toCharArray();
int[] arr =new int[10000];
for(int i =0;i
char temp = arr1[i];
arr[temp]=1;
if(temp>= 'A' && temp <= 'Z'){
arr[temp+32]=1;
}
}
String s="";
for(int i =0;i
char temp = arr2[i];
if(arr[temp]==0){
if( temp >='A' && temp<='Z' && arr['+']==1){
continue;
}
s+=temp;
}
}
System.out.println(s);
}
}
3、Java版本,AC,全部测试点通过
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner sc =new Scanner(System.in);
char[] arr1 = sc.nextLine().toCharArray();
char[] arr2 = sc.nextLine().toCharArray();
int[] arr =new int[10000];
for(int i =0;i
char temp = arr1[i];
arr[temp]=1;
if(temp>= 'A' && temp <= 'Z'){
arr[temp+32]=1;
}
}
StringBuilder sb =new StringBuilder();
for(int i =0;i
char temp = arr2[i];
if(arr[temp]==0){
if( temp >='A' && temp<='Z' && arr['+']==1){
continue;
}
sb.append(temp);
}
}
System.out.print(sb.toString());
}
}
Python
Java
惊讶地发现Python的也很强大,比Java快!