将字符串分成四个一组

0 java algorithm substring

输入是;

"AbrAcadAbRa"
Run Code Online (Sandbox Code Playgroud)

输出应该是;

["AbrA", "brAc", "rAca", "Acad", "cadA", "adAb", "dAbR", "AbRa]
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止所尝试过的,没有成功;

public static void main(String[] args) {
    // TODO Auto-generated method stub
    String str = "AbrAcadAbRa";
    int length = 4;
    String subString = "";
    for (int i = 0; i < length; i++) {
        subString = str.substring(i, length);
        System.out.println(subString);
        str = str.substring(i);
    }
}
Run Code Online (Sandbox Code Playgroud)

它给出了错误的输出;

["AbrA", "brA", "Ac", "d"]
Run Code Online (Sandbox Code Playgroud)

Tim*_*sen 6

迭代字符串的逻辑是不正确的,因此是您当前的结果.我在下面使用的逻辑是遍历输入字符串的整个长度,但是需要很多空间来确保可以采用适当的长度子字符串.然后,在每次迭代中,打印出一个length子字符串.

public static void main(String args[]) {
    String str = "AbrAcadAbRa";
    int length = 4;
    String subString = "";
    // iterate over the length of the input, offset by the substring length
    for (int i = 0; i < str.length()-length+1; i++) {
        subString = str.substring(i, i+length);
        System.out.println(subString);
        // this is wrong; don't modify the original string
        //str = str.substring(i);
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

AbrA
brAc
rAca
Acad
cadA
adAb
dAbR
AbRa
Run Code Online (Sandbox Code Playgroud)

在这里演示:

Rextester