字母数字字符串的所有组合,更好的方法?

sk95

“ alphaNumeric”函数的输入是一个字符串,由所有小写的字母数字字符组成,例如“ hello123hello”。我希望能够通过check()函数检查此字符串的所有大写/小写字母组合。(例如HeL10123hELlo是要检查的组合之一)。我已经用Java编写了代码,将匹配的String存储到ArrayList中,但是想知道如果没有ArrayList,是否有更好的方法可以做到这一点。另外,我说最坏的情况是O(2 ^ n)正确吗?注意:Check是一个返回true或false的函数,具体取决于是否将正确的String传递给该函数。

public static String alphaNumeric(String input) {
    ArrayList<String> list = new ArrayList<String>();
    alphaHelper(input, "", list);
    return list.get(0);
}

private static void alphaHelper(String in, String current, ArrayList<String> list) {
    if (in.length() == 0) {
        if (check(current)) {
            list.add(current);
        }
    } else if (Character.isLetter(in.charAt(0))) {
        alphaHelper(in.substring(1),current+in.substring(0,1).toLowerCase(),list);
        alphaHelper(in.substring(1),current+in.substring(0,1).toUpperCase(),list);
    } else if (Character.isDigit(in.charAt(0))) {
        alphaHelper(in.substring(1),current+in.substring(0,1),list);
    } else {
        return;
    }
}
CupawnTae

如果您只想删除ArrayList而不更改基本算法,则可以执行以下操作:

public static String alphaNumeric(String input) {
    return alphaHelper(input, "");
}

private static String alphaHelper(String in, String current) {
    String result = null;

    if (check(current)) {
        result = current;
    } else if (Character.isLetter(in.charAt(0))) {
        result = alphaHelper(in.substring(1),current+in.substring(0,1).toLowerCase());
        if (result == null) result = alphaHelper(in.substring(1),current+in.substring(0,1).toUpperCase());
    } else if (Character.isDigit(in.charAt(0))) {
        result = alphaHelper(in.substring(1),current+in.substring(0,1));
    }

    return result;
}

是的,它是O(2 ^ n),如果您不能直接获得原始字符串,我看不到如何改进。

如果您不需要检查子字符串(即,您只关心整个字符串的大小写变化),则可以通过不测试子字符串来改进算法,但是它仍然是O(2 ^ n)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

确保字符串仅包含字母数字字符的更好方法?

来自分类Dev

python:在文件中有选择地拆分和组合字母数字字符串

来自分类Dev

Excel-从字母数字字符串中提取所有数字

来自分类Dev

替换字符串中除模式以外的所有字母数字字符

来自分类Dev

Java从字符串的开头和结尾删除所有非字母数字字符

来自分类Dev

将字符串转换为Python中所有非字母数字字符的列表

来自分类Dev

替换字符串中所有出现的字母数字字符

来自分类Dev

从删除所有非字母数字字符的字符串中获取列表

来自分类Dev

正则表达式-拒绝所有字母数字字符串

来自分类Dev

生成字母数字字符串

来自分类Dev

递增字母数字字符串

来自分类Dev

更好的SQL查询以基于模式拆分字母数字字符串

来自分类Dev

如何使用正则表达式从字符串中删除所有非字母数字字符(“#”除外)?

来自分类Dev

PHP:生成字符串的所有可能的字母数字组合

来自分类Dev

是否有任何可以让我将数字字符串转换为数字和字母字符串的字符串方法?

来自分类Dev

从字母数字字符串中检索字母字符

来自分类Dev

字母数字字符串末尾的javascript增量数字

来自分类Dev

javascript | 匹配字母数字或数字字符串

来自分类Dev

如何从字母数字字符串中提取有效数字?

来自分类Dev

在python中通过字母或对从字符串中获取所有组合的最佳方法

来自分类Dev

连接字符串数组中的所有非数字字符串

来自分类Dev

仅计算字符串中的字母数字字符

来自分类Dev

如何检查番石榴中的字符串是否只有字母数字字符?

来自分类Dev

如何检查番石榴中的字符串是否只有字母数字字符?

来自分类Dev

从Java脚本中的字符串中提取字母数字字符的快速方法

来自分类Dev

如何压缩字母数字字符串?

来自分类Dev

vim语法匹配字母数字字符串

来自分类Dev

JavaScript字母数字字符串比较

来自分类Dev

如何对字母数字字符串进行排序

Related 相关文章

  1. 1

    确保字符串仅包含字母数字字符的更好方法?

  2. 2

    python:在文件中有选择地拆分和组合字母数字字符串

  3. 3

    Excel-从字母数字字符串中提取所有数字

  4. 4

    替换字符串中除模式以外的所有字母数字字符

  5. 5

    Java从字符串的开头和结尾删除所有非字母数字字符

  6. 6

    将字符串转换为Python中所有非字母数字字符的列表

  7. 7

    替换字符串中所有出现的字母数字字符

  8. 8

    从删除所有非字母数字字符的字符串中获取列表

  9. 9

    正则表达式-拒绝所有字母数字字符串

  10. 10

    生成字母数字字符串

  11. 11

    递增字母数字字符串

  12. 12

    更好的SQL查询以基于模式拆分字母数字字符串

  13. 13

    如何使用正则表达式从字符串中删除所有非字母数字字符(“#”除外)?

  14. 14

    PHP:生成字符串的所有可能的字母数字组合

  15. 15

    是否有任何可以让我将数字字符串转换为数字和字母字符串的字符串方法?

  16. 16

    从字母数字字符串中检索字母字符

  17. 17

    字母数字字符串末尾的javascript增量数字

  18. 18

    javascript | 匹配字母数字或数字字符串

  19. 19

    如何从字母数字字符串中提取有效数字?

  20. 20

    在python中通过字母或对从字符串中获取所有组合的最佳方法

  21. 21

    连接字符串数组中的所有非数字字符串

  22. 22

    仅计算字符串中的字母数字字符

  23. 23

    如何检查番石榴中的字符串是否只有字母数字字符?

  24. 24

    如何检查番石榴中的字符串是否只有字母数字字符?

  25. 25

    从Java脚本中的字符串中提取字母数字字符的快速方法

  26. 26

    如何压缩字母数字字符串?

  27. 27

    vim语法匹配字母数字字符串

  28. 28

    JavaScript字母数字字符串比较

  29. 29

    如何对字母数字字符串进行排序

热门标签

归档