17
回答
用java语言,不使用java的任何系统函数完成一个字符串的逆序输出!
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   

上次面试一家游戏公司,面试官出的一道题。

我始终觉得这是不可能的,我还专门问了下面试官,java的系统函数一点都不能用吗,比如String的length、charAt、toCharArray这样的方法都不能用吗。面试官说是的。

我感觉面试官是个二逼。要么这是一个C/C++题目,不是java题目,要么就不可能完成。java程序怎么能脱离系统函数呢???

举报
王小狼
发帖于5年前 17回/2K+阅
共有17个答案 最后回答: 5年前
如果传入的参数是String对象的话,我是没办法的。如果是char数组,这个可以做。
--- 共有 1 条评论 ---
王小狼这个我当时也问了一下,面试官说就是传入一个字符串,不是字符数组或者捕捉键盘输入之类的 5年前 回复

参考一下jdk中的reverse()方法的实现

public AbstractStringBuilder reverse() {
        boolean hasSurrogate = false;
        int n = count - 1;
        for (int j = (n-1) >> 1; j >= 0; --j) {
            char temp = value[j];
            char temp2 = value[n - j];
            if (!hasSurrogate) {
                hasSurrogate = (temp >= Character.MIN_SURROGATE && temp <= Character.MAX_SURROGATE)
                    || (temp2 >= Character.MIN_SURROGATE && temp2 <= Character.MAX_SURROGATE);
            }
            value[j] = temp2;
            value[n - j] = temp;
        }
        if (hasSurrogate) {
            // Reverse back all valid surrogate pairs
            for (int i = 0; i < count - 1; i++) {
                char c2 = value[i];
                if (Character.isLowSurrogate(c2)) {
                    char c1 = value[i + 1];
                    if (Character.isHighSurrogate(c1)) {
                        value[i++] = c1;
                        value[i] = c2;
                    }
                }
            }
        }
        return this;
    }

引用来自“南宫傲”的答案

写个jni给他就完了
在java中调jni 能不用到系统函数么?
--- 共有 1 条评论 ---
普州散仙一点系统函数都不用?那你给写个试试? 5年前 回复

引用来自“throwable”的答案

其实面试官的意思是:你别浪费时间了,我们公司不会要你的
这个解释挺靠谱

引用来自“throwable”的答案

其实面试官的意思是:你别浪费时间了,我们公司不会要你的
哈哈,有点这个意思。。。
顶部