用java语言,不使用java的任何系统函数完成一个字符串的逆序输出!

王小狼 发布于 2013/03/04 15:48
阅读 3K+
收藏 0

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

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

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

加载中
0
麦麸子lee
麦麸子lee
写个jni给他就完了
王小狼
王小狼
这个有点难度,我写不出来。。
0
魔力猫
魔力猫
如果传入的参数是String对象的话,我是没办法的。如果是char数组,这个可以做。
王小狼
王小狼
这个我当时也问了一下,面试官说就是传入一个字符串,不是字符数组或者捕捉键盘输入之类的
0
huan
huan
嗯,确实有点二,我估计他的愿意是 让你直接操作char[] 
liu6jing6
liu6jing6
放字符数组里
王小狼
王小狼
任何String的方法都不给用,怎么获取char[],怎么破。。
0
恺哥
恺哥

参考一下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;
    }

0
huan
huan

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

写个jni给他就完了
在java中调jni 能不用到系统函数么?
麦麸子lee
麦麸子lee
一点系统函数都不用?那你给写个试试?
0
魔力猫
魔力猫
这个要求我搞不清楚的是不走API怎么从String对象里面拿字符数组。
0
excepiton
excepiton
其实面试官的意思是:你别浪费时间了,我们公司不会要你的
0
恺哥
恺哥

引用来自“throwable”的答案

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

引用来自“throwable”的答案

其实面试官的意思是:你别浪费时间了,我们公司不会要你的
哈哈,有点这个意思。。。
0
enzozhong
enzozhong
是只有string类的方法不给用,还是所以的类方法都不给用?
返回顶部
顶部