如何用字符串中的两个可能字符替换一个字符

时间:2014-01-16 01:00:57

标签: java string replace

我想知道如何使用"10?01?1"'?'替换1处的0字符串。例如,来自字符串"1?0" - > "110"&& "100"。如何解决这个问题?递归?感谢。

OP评论

编辑

  

" 1?0?1 ...它应该有四种不同的组合。 " 11011"," 11001"," 10011"," 10001"。如何打印所有四种组合?"

7 个答案:

答案 0 :(得分:0)

递归调用下一个字符并检测下一个字符是否为?或不。如果是?将其替换为0或1。

答案 1 :(得分:0)

我想知道如何更换字符串,例如" 10?01?1" at'?' 1或0 您可以使用replaceAll()replace()

替换它

实施例

String str= "1?0";
String replcaed=str.replace("?","1");

答案 2 :(得分:0)

当您遇到'?'时,请将其替换为'0'并重复,然后将其替换为'1'并重复使用。

private void permute(String s) { 
    ... 
    if (s.charAt(i) == '?') { 
        permute(<replacing '?' with '0'>);
        permute(<replacing '?' with '1'>); 
    } 
    ...
}

答案 3 :(得分:0)

您可以使用此方法获得4种组合,但不是所有8种组合。 因为在这种方法中,当递归发生时,字符串改变而没有'?' ,但它会更新内存中的索引。这就是为什么它只给出四个答案。如果你增加数字,它会给你不同的组合等于数字 公共类递归{

private static void replaceCharacters(char[] inputString, int stringLength, int characterIndex) {

    if (characterIndex < stringLength) {
        if (inputString[characterIndex] == '?') {
            inputString[characterIndex] = '1';
            replaceCharacters(inputString, stringLength, characterIndex + 1);
            inputString[characterIndex] = '0';
            replaceCharacters(inputString, stringLength, characterIndex + 1);
        } else {
            replaceCharacters(inputString, stringLength, characterIndex + 1);
        }
    } else {
        System.out.println(new String(inputString));
    }
}

public static void main(String[] args) {
    String testString = "1???";
    replaceCharacters(testString.toCharArray(), testString.length(), 0);

}

}

答案 4 :(得分:0)

试试这个

public static void main(String[] args) {
    combinations("1?0?1");
}

public static void combinations(String s) {
    if(s.contains("?")){
        combinations(replace(s, '0'));
        combinations(replace(s, '1'));
    } else {
        System.out.println(s);
    }
}

public static String replace(String s, char replacement){
    char[] charSeq = s.toCharArray();
    int i;
    for(i=0; charSeq[i]!='?'; i++);
    charSeq[i]=replacement;
    return new String(charSeq);
}

输出

10001 10011 11001 11011

答案 5 :(得分:0)

div

没有replaceFirst()

的完整版本

答案 6 :(得分:0)

试试这个代码“1 ???”所有组合为:1000,1001,1010,1011,1100,1101,1110,1111 尽可能通过2 ^ 3 = 8种组合。

import java.util.*;

import java.lang.*;

import java.io.*;

 class testRecursion {

    public static void main(String[] args) {
        combinations("1???");
    }

    public static void combinations(String s) {
        if(s.contains("?")){
            combinations(replace(s, '0'));
            combinations(replace(s, '1'));
        } else {
            System.out.println(s);
        }
    }

    public static String replace(String s, char replacement){
        char[] charSeq = s.toCharArray();
        int i;
        for(i=0; charSeq[i]!='?'; i++);
        charSeq[i]=replacement;
        return new String(charSeq);
    }
}