有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java检查字符串是否包含字母表中的所有字母

检查给定字符串中所有字母的最佳逻辑是什么

如果在提供的字符串中所有26个字母都可用,我想检查并执行so ops。给我的箱子装上五打酒壶

  1. 使用散列会有用吗
  2. 还是使用位图?还是其他方式

顺便说一句,我的代码是用Java编写的


共 (6) 个答案

  1. # 1 楼答案

    一个26个布尔值的数组就足够了,每个条目代表字母表中的一个字母。当找到字母时,可以将条目设置为true

  2. # 2 楼答案

    使用位图,我想你指的是case instive

    更新:Thomas的解决方案比以下解决方案更有效:用那个

        //
        String test  = "abcdefeghjiklmnopqrstuvwxyz";
    
        BitSet alpha = new BitSet(26);
        for(char ch : test.toUpperCase().toCharArray())
            if(Character.isLetter(ch))
                alpha.set(ch - 65);
    
        System.out.println(alpha.cardinality() == 26);
    
  3. # 3 楼答案

    我会选择26个字母的筛选算法。只有我的0.02美元

    编辑:26个值的数组,表示字母表中的26个字母。然后扫描字符串,检查遇到的每个字母。最后,检查26个字母是否已检查

  4. # 4 楼答案

    保持大小为26的boolean数组。数组的每个位置都表示是否存在特定字符(a位于0,b位于1,等等)。最初,所有参数都设置为false。现在逐个字符扫描字符串,将该字符的值设置为true。最后,检查所有26个索引是否都包含true

  5. # 5 楼答案

    尚未完全优化:

    public static void main(String... a) {
        String s = "Pack my box with five dozen liquor jugs.";
        int i=0;
        for(char c : s.toCharArray()) {
            int x = Character.toUpperCase(c);
            if (x >= 'A' && x <= 'Z') {
                i |= 1 << (x - 'A');
            }
        }
        if (i == (i | ((1 << (1 + 'Z' - 'A')) - 1))) {
            System.out.println("ok");
        }
    }
    
  6. # 6 楼答案

    我想要一张位图。如果每次将位图中的条目设置为1时递增计数器,则可以在看到所有字母后立即返回。我希望这不是为了强制执行密码要求