远景能源的笔试题疑问

今天做远景能源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;
    }
笔试完事,心灰意冷啊!
全部评论
字符串的问题我猜是每个测试用例有多个字符串,外面加上while(in.hasNextLine())应该就可以
点赞 回复 分享
发布于 2017-08-28 09:43
第二题是leetcode的题目,牛客上的leetcode经典题目的动态规划类的一个题目
点赞 回复 分享
发布于 2017-08-28 00:02
小老板扎心了
点赞 回复 分享
发布于 2017-08-27 23:59

相关推荐

不愿透露姓名的神秘牛友
04-22 18:57
点赞 评论 收藏
分享
03-16 22:00
武汉大学 C++
幸福的小熊猫想要offer:我阿里投的 c++岗,面试官说自己是做 java 的,c++这辈子才有了
点赞 评论 收藏
分享
03-02 17:52
已编辑
北京航空航天大学 Java
狠狠学代码:布什哥们,这科研经历真来互联网卷Java啊,真干两年找不到工作咋整,这科研成果读个博去高校不好吗这实力太强了
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务