提问人:Branto 提问时间:3/5/2023 最后编辑:ThiyaguBranto 更新时间:3/5/2023 访问量:110
递归方法,在从大写或小写更改所有其他字母后返回一个字符串
recursion method that returns a string after changing every other letter from uppercase or lowercase
问:
使用递归将字符串字符从所有其他字母从大写更改为小写,然后返回该字符串。我试图扩展我对递归的知识,我知道我可以在没有它的情况下做到这一点,但我想知道你是如何做到这一点的,这就是我到目前为止所拥有的
public static String camelCaseRecursive(String w){
if(w.length()==0) {
return "";
}
char sec = 0;
String returned_str = "";
char ch = w.charAt(0);
if (w.length() > 1) {
sec = w.charAt(1);
}
;
String remaining_str = w.substring(1);
returned_str = camelCaseRecursive(remaining_str);
if(ch >= 'A' && ch <='Z' && sec >= 'a' && sec <='z' ) {
ch = Character.toLowerCase(w.charAt(0));
returned_str = ch+returned_str;
}
else if((ch >= 'A' && ch <='Z') && (sec >= 'A' && sec <='Z') ){
ch = Character.toLowerCase(w.charAt(0));
returned_str = ch+returned_str;
}
else if((ch >= 'a' && ch <='z') && returned_str.length() %2 !=0){
ch = Character.toUpperCase(w.charAt(0));
returned_str = ch+returned_str;
}
else{
returned_str = ch+returned_str;
}
return returned_str;
}
我的期望是
input:(Hello World) output:(hElLo wOrLd)
input:(Even) output:(eVeN)
我得到的是
input:(Hello World) output:(hElLo wOrLd)
input:(Even) output:(evEn)
我知道我得到我得到的原因是因为 returned_str.length() %2 !=0 给出奇数,如果使用 ==,它会为偶数字符串执行此操作。有没有办法同时做到这两点,或者知道何时在第一次调用时使用适当的一个?问题是我不知道如何在没有某种计数器来跟踪的情况下在递归中在大写和小写之间交替。是否可以设置一个可以在大写和小写之间交替的方法,或者设置一个条件,知道何时使用字符串的长度这样做,或者像下标或比较或其他东西一样读取它?
答:
2赞
Thiyagu
3/5/2023
#1
一种方法是使用传递其他参数的私有帮助程序方法。
我们将字符串的索引传递给处理,为了避免字符串串联,我们使用 .StringBuilder
public static String camelCaseRecursive(String s) {
return camelCaseRecursiveHelper(s, 0, new StringBuilder());
}
private static String camelCaseRecursiveHelper(String s, int i,
StringBuilder stringBuilder) {
if (i == s.length()) {
return stringBuilder.toString();
} else {
Character curr = s.charAt(i);
if (Character.isLetter(curr)) {
curr = i % 2 == 0
? Character.toLowerCase(curr)
: Character.toUpperCase(curr);
}
stringBuilder.append(curr);
return camelCaseRecursiveHelper(s, i + 1, stringBuilder);
}
}
我们检查当前指数是偶数还是奇数,并在此基础上进行大小写转换。
评论