剩余剩货

时间:2020-10-19 08:32:42

标签: java

我正在研究一个程序,该程序读取一个字符串并根据数字反转某些字符。
(即,给出了“ TELLER”和3,则应返回“ LETREL”)
我遇到的问题是我需要反转剩余的多余字符
(即,给出了“ HELLO”和3,当我需要它返回“ LEHOL”时会返回“ LEHLO”)
这就是我目前正在尝试的方式

for (int i = 0; i < st.length();) {
            if (i + x > st.length()-1){
                break;
            }

            st = st.substring(0, i) + new String(new StringBuilder(st.substring(i, i + x)).reverse()) + st.substring(i + x);

            i += x; }

3 个答案:

答案 0 :(得分:2)

String input = "Hello";
StringBuilder buffer = new StringBuilder();
int x = 3;

for(int d = 0; d < Math.floor(input.length / x); d++){
    buffer.append((new StringBuilder(input.substring(d * x, (d + 1) * x))).reverse());
}

if(input.length % x != 0) buffer.append((new StringBuilder(input.substring(input.length - input.length % x - 1))).reverse());

System.out.println("Result is " + buffer.toString());

答案 1 :(得分:0)

尝试以下方法。应该可以。

for (int i = 0; i < st.length();) {
        if (i + x > st.length()-1){
            s += new String(new StringBuilder(st.substring(i, st.length())).reverse());
            break;
        }

        s += new String(new StringBuilder(st.substring(i, i + x)).reverse());

        i += x;
    }

让我知道您是否不了解任何部分。编码愉快!

答案 2 :(得分:0)

字符串连接+和+ =昂贵,因为创建了多个字符串。 同样,以给定的步长逐步浏览字符串也很容易:

StringBuilder reversed = new StringBuilder(st.length);
for (int i = 0; i + x <= st.length(); i += x) {
    int nextI = Math.min(i + x, st.length());
    for (int j = i; j < nextI; ++j) {
        reversed.insert(i, st.charAt(j));
    }
}
s = reversed.toString();

for (int i = 0; i < st.length(); ) {
    int nextI = Math.min(i + x, st.length());
    for (int j = i; j < nextI; ++j) {
        reversed.insert(i, st.charAt(j));
    }
    i = nextI;
}
相关问题