远景能源的笔试题疑问
今天做远景能源java岗笔试,总共60分钟,完成20道选择题与2道编程题。
其中20道选择题没有一个和Java相关。
其中两道笔试题。先说,第二道笔试题,输入一个字符串,字符串里只包含大小写字母和数字,将字符串里的字符按照ASC码从小到大进行排序输出,题目居然还注明用C语言解决。分别用java和C语言各实现了一遍,都是通过百分之0。搞不懂,给的样例输入输出测试没问题啊。
import java.util.*; public class MyMain{ public static void main(String[] args){ Scanner in = new Scanner(System.in); String s = in.nextLine(); char[] chars = s.toCharArray(); Arrays.sort(chars); System.out.println(chars); } }
#include<stdio.h> #include<stdlib.h> #include<string.h> int compare( const void *arg1, const void *arg2 ) { return (*(char *)arg1) - (*(char *)arg2); } int main(){ char s[1025] ; scanf("%s",s); int len = strlen(s); qsort((void*)s,len,1,compare); printf("%s",s); return 0; }
然后第一道编程题居然还是英文出的。大概意思是两个字符串S,T,问T是S的绝对子串的个数。例如“ACE”是“ABCDE”的绝对子串,“AEC”不是“ABCDE”的绝对子串。"rabit"是“rabbbit”的绝对子串的个数为3个,因为3个'b'任意一个都是有可能组成这个子串的。给定字符串T,S不超过1024个字符串。我选择利用递归进行解决,不过一上来就告诉我内存溢出了,通过百分之0。就算栈溢出,难道没有小用例让我通过个百分之10么。
public static int numDistinct(String S, String T) { int count = 0; // 没有判断给定字符串T为空的情况 if(T.length() == 0) return 1; for(int i = 0 ; i < S.length() ; i++){ if(S.charAt(i) == T.charAt(0)){ count += numDistinct(S.substring(i+1),T.substring(1)); } } return count; }笔试完事,心灰意冷啊!