栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

带Java传递字符串错误的蛮力算法

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

带Java传递字符串错误的蛮力算法

希望这可以帮助您解决问题。就目前而言,您

keyGen()
相当于以下代码:

public String keyGen() {    return "!!!!!!!!";}

因为一旦进入最内部的

for
循环,就立即返回该值。也许您想更改返回a的方法,
List<String>
并在最里面的
for
循环中将字符串添加到该列表,然后在所有
for
循环之后返回该列表?这样,您可以遍历
main
方法中的列表。


如果我算对了,那么会有93 ^ 8 =
5.595.818.096.650.401个不同的字符串。将所有这些存储在列表中是不好的建议。杜克林在评论中指出,为此最好使用习惯

Iterator<String>


编辑

这是这种迭代器的实现:

import java.util.Arrays;import java.util.Iterator;public class BruteForceIterator implements Iterator<String> {    private char min, max;    private char[] current;    private char[] last;    private int reachedLast = 0;    public BruteForceIterator(char min, char max, int length) {        this.min = min;        this.max = max;        current = new char[length];        Arrays.fill(current, min);        last = new char[length];        Arrays.fill(last, max);    }    @Override    public boolean hasNext() {        return reachedLast < 2;    }    @Override    public String next() {        String str = new String(current);        for(int i = current.length - 1; i >= 0; i--) { char next = following(current[i]); current[i] = next; if (next != min) {     break; }        }        if (Arrays.equals(current, last) || reachedLast > 0) { reachedLast++;        }        return str;    }    private char following(char in) {        if (in < max) { return (char) (in + 1);        } else { return min;        }    }    @Override    public void remove() {        throw new UnsupportedOperationException("No with me, sir!");    }    public static void main(String[] args) {        BruteForceIterator bit = new BruteForceIterator('a', 'c', 3);        while (bit.hasNext()) { System.out.println(bit.next());        }    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/515282.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号