java - JAVA从字母表的相反端找到对应的字母并递归地从字符串中删除

标签 java regex recursion

方法应该接受一个单词,递归地遍历字符串并找到与字母表两端距离相同的字母并将其删除。如果删除匹配项,这些字母将无法再次使用。如果每个字母都被删除,那么它就是一个匹配。

for (int i = 1; i < word.length()-1; i++) { if (word.charAt(0) + word.charAt(i) == 155) { StringBuilder sb = new StringBuilder(word); sb.deleteCharAt(0); sb.deleteCharAt(i); String strNew = sb.toString(); System.out.println(strNew); return isAlphaOpp(strNew); } } return false; }

最佳答案

我对你的方法做了一些修改,你看一下。如果您的字符串全部是大写,则需要与 155 进行比较,如果您需要的所有小写字母与 219 进行比较。正如 @Raghu 所建议的,这不需要递归(这使事情变得复杂),但我假设您想尝试使用递归。

public static boolean isAlphaOpp (String word)
    {
        //if word has odd number of characters, it cannot be an alpha opp
        if (word.length() % 2 != 0)
        {
            return false;
        }
        //if string makes it to 0, then word must be an alpha opp
        if (word.length() == 0)
        {
            return true;
        }

        /*if (word.charAt(0) + word.charAt(word.length()-1) == 155)
            {
                System.out.println(word.substring(1, word.length()-1));
                return isAlphaOpp(word.substring(1, word.length()-1));
            }
        */
        //Should go thru each letter and compare the values with char(0). If char(0) +     //char(i) == 155 (a match) then it should remove them and call the method again.
        int length = word.length()-1;
        int start = 0;
        String newStr = null;
        while(start < length) {

            if(word.charAt(start) + word.charAt(length) == 219) {
                StringBuilder sb = new StringBuilder(word);
                sb.deleteCharAt(length);
                sb.deleteCharAt(start);
                newStr = sb.toString();
                System.out.println(newStr);
                start++;
                length--;
                break;
            } else {
                start++;
            }
        }
        if(newStr != null) {
            return isAlphaOpp(newStr);
        }
        return false;
    }

关于java - JAVA从字母表的相反端找到对应的字母并递归地从字符串中删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25858862/

相关文章:

java - 从整体迁移到微服务

PHP - 从文本中删除点但排除数字

python - 链表,如果 __init__() 中参数中的元素是可迭代的,则从中构造新的链表

algorithm - 关于树数据结构的问题: How can we fill all inorder successor pointer of all tree nodes?

java - 这两个 Spring Java 配置类如何协同工作?

java - EasyMock——测试类中的模拟方法?

java - 定义命名空间时,使用 Maven 创建的架构验证 XML 失败

javascript - 正则表达式除带两位小数的数字之外的所有内容

javascript - 在 JavaScript 中使用 RegEx 从字符串中删除一次子字符串

java - Map Java的递归迭代