大家好,我开始学习一些Java。
我发现Codewars.com是锻炼和学习的好方法。

我得到了以下指示:

accum("abcd") -> "A-Bb-Ccc-Dddd"
accum("RqaEzty") -> "R-Qq-Aaa-Eeee-Zzzzz-Tttttt-Yyyyyyy"
accum("cwAt") -> "C-Ww-Aaa-Tttt"


到目前为止,这是我设法做到的,如果有人可以向我解释如何正确返回它,以及如何在每个字母的末尾添加“-”。

 for (int i = 1; i<=x.length(); i++){
    return x.substring(i-1,i).toUpperCase();
    for (int j = 1; j<i; j++){
        return x.substring(i-1,i);
    }
}

OUTPUT:
A
M
m
I
i
i
T
t
t
t


谢谢你的支持。

最佳答案

当您有一个return后无法执行的代码时,您只需读取每个字符,然后将其乘以索引

您可以使用StringBuilder轻松完成此操作

static String accum(String value) {
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < value.length(); i++) {
        sb.append(value.toUpperCase().charAt(i));
        for (int j = 0; j < i; j++) {
            sb.append(value.toLowerCase().charAt(i));
        }
        sb.append("-");
    }
    return sb.deleteCharAt(sb.lastIndexOf("-")).toString();
}


使用Java11和String.reapeat

static String accum(String value) {
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < value.length(); i++) {
        sb.append(value.toUpperCase().charAt(i));
        sb.append(String.valueOf(value.toLowerCase().charAt(i)).repeat(i));
        sb.append("-");
    }
    return sb.deleteCharAt(sb.lastIndexOf("-")).toString();
}

10-08 07:05
查看更多