1

以下是关于 Glassdoor 的一个面试问题,我没有找到一个好的解决方案。

给定一个长度为 25 的字符串,由字母(小写和大写)和数字组成。现在,在这个字符串中,一些大写字母是小写的。所以它变成了一个损坏的字符串。假设有一个黑盒函数返回一个整数,比如 13 或 14,它表示输入字符串是正确的,否则它会引发异常。给定这个损坏的字符串,如何找到正确的原始字符串?

有人对这个问题有想法吗?

谢谢:)

4

2 回答 2

1

假设黑盒函数(假设它也适用于子字符串)声明如下:

    public Integer isCorrectString(String value) throws Exception;

我们可以编写一个小循环来纠正您的 25 长度字符串,如下所示:

    String inputString ="abcd...";
    for(int i=1; i<=25; i++){
            try{
                   isCorrectString(inputString.substring(0, i));
             }catch(Exception ex) {
                  //change the char at ith position to upper case as its incorrect
                  inputString = inputString.substring(0, i-1)+
                          inputString.substring(i-1, i).toUpperCase()+
                          inputString.substring(i+1);

             }
     }

循环后,inputString应予以纠正。

于 2012-10-05T02:11:44.297 回答
0

直接的解决方案是将输入字符串中的小写字母更改为大写,并检查黑盒函数是否返回整数值(不例外)。应检查每个组合。最坏情况下的组合数是 2 的 25 次幂减 1

于 2012-10-05T02:16:05.863 回答