Java CodingBat——递归编码
我正在尝试前面的编码bat问题: 给定一个字符串和一个int n,返回一个由前n个字符组成的字符串 字符串,后跟字符串的前n-1个字符,依此类推。你 可以假设n在0和字符串长度之间,包括0和字符串长度(即nJava CodingBat——递归编码,java,recursion,tail-recursion,Java,Recursion,Tail Recursion,我正在尝试前面的编码bat问题: 给定一个字符串和一个int n,返回一个由前n个字符组成的字符串 字符串,后跟字符串的前n-1个字符,依此类推。你 可以假设n在0和字符串长度之间,包括0和字符串长度(即n =0和n啊,我发现了你的问题 只有当n==0时,才能返回空字符串 Returningstr将在调用repeatFront(Ch,1)和repeatFront(C,0)时再次返回额外的最后一个字母 通过将n==0的返回值更改为return”“;: if(n==0) { return "
=0和n啊,我发现了你的问题 只有当
n==0
时,才能返回空字符串
Returningstr
将在调用repeatFront(Ch,1)
和repeatFront(C,0)
时再次返回额外的最后一个字母
通过将n==0的返回值更改为return”“;
:
if(n==0) {
return "";
}
啊,我发现了你的问题
只有当n==0
时,才能返回空字符串
Returningstr
将在调用repeatFront(Ch,1)
和repeatFront(C,0)
时再次返回额外的最后一个字母
通过将n==0的返回值更改为return”“;
:
if(n==0) {
return "";
}
啊,我发现了你的问题
只有当n==0
时,才能返回空字符串
Returningstr
将在调用repeatFront(Ch,1)
和repeatFront(C,0)
时再次返回额外的最后一个字母
通过将n==0的返回值更改为return”“;
:
if(n==0) {
return "";
}
啊,我发现了你的问题
只有当n==0
时,才能返回空字符串
Returningstr
将在调用repeatFront(Ch,1)
和repeatFront(C,0)
时再次返回额外的最后一个字母
通过将n==0的返回值更改为return”“;
:
if(n==0) {
return "";
}
好吧,这是有效的-
public static void main(String[] args) {
StringBuilder sb = new StringBuilder();
repeatFront("Chocolate", 4,sb);
System.out.println(sb);
}
public static void repeatFront(String str, int n,StringBuilder sb) {
if(n==0) {
return;
}
sb.append(str.substring(0,n));
repeatFront(str,n-1,sb);
}
}
问题-对于n=0,返回sub是因为得到了最后一个额外的字符。我使用了StringBuilder
,这使它变得清晰,并且消除了为每个调用创建额外字符串对象的开销。这很有效-
public static void main(String[] args) {
StringBuilder sb = new StringBuilder();
repeatFront("Chocolate", 4,sb);
System.out.println(sb);
}
public static void repeatFront(String str, int n,StringBuilder sb) {
if(n==0) {
return;
}
sb.append(str.substring(0,n));
repeatFront(str,n-1,sb);
}
}
问题-对于n=0,返回sub是因为得到了最后一个额外的字符。我使用了StringBuilder
,这使它变得清晰,并且消除了为每个调用创建额外字符串对象的开销。这很有效-
public static void main(String[] args) {
StringBuilder sb = new StringBuilder();
repeatFront("Chocolate", 4,sb);
System.out.println(sb);
}
public static void repeatFront(String str, int n,StringBuilder sb) {
if(n==0) {
return;
}
sb.append(str.substring(0,n));
repeatFront(str,n-1,sb);
}
}
问题-对于n=0,返回sub是因为得到了最后一个额外的字符。我使用了StringBuilder
,这使它变得清晰,并且消除了为每个调用创建额外字符串对象的开销。这很有效-
public static void main(String[] args) {
StringBuilder sb = new StringBuilder();
repeatFront("Chocolate", 4,sb);
System.out.println(sb);
}
public static void repeatFront(String str, int n,StringBuilder sb) {
if(n==0) {
return;
}
sb.append(str.substring(0,n));
repeatFront(str,n-1,sb);
}
}
问题-对于n=0,返回sub是因为得到了最后一个额外字符。我使用了StringBuilder
,这使它变得干净,并且消除了为每个调用创建额外字符串对象的开销。您可以使用以下方法:
public String repeatEnd(String str, int n) {
if (n == 0)
return "";
String res = re(str, n);
String resl ="";
for (int i =0 ; i < n ; i ++){
resl = resl + res;
}
return resl;
}
public String re(String s , int n){
String end = "";
int len = s.length();
end = s.substring(len-n , len);
return end;
}
publicstringrepeatend(stringstr,intn){
如果(n==0)
返回“”;
字符串res=re(str,n);
字符串resl=“”;
对于(int i=0;i
您可以使用以下功能:
public String repeatEnd(String str, int n) {
if (n == 0)
return "";
String res = re(str, n);
String resl ="";
for (int i =0 ; i < n ; i ++){
resl = resl + res;
}
return resl;
}
public String re(String s , int n){
String end = "";
int len = s.length();
end = s.substring(len-n , len);
return end;
}
publicstringrepeatend(stringstr,intn){
如果(n==0)
返回“”;
字符串res=re(str,n);
字符串resl=“”;
对于(int i=0;i
您可以使用以下功能:
public String repeatEnd(String str, int n) {
if (n == 0)
return "";
String res = re(str, n);
String resl ="";
for (int i =0 ; i < n ; i ++){
resl = resl + res;
}
return resl;
}
public String re(String s , int n){
String end = "";
int len = s.length();
end = s.substring(len-n , len);
return end;
}
publicstringrepeatend(stringstr,intn){
如果(n==0)
返回“”;
字符串res=re(str,n);
字符串resl=“”;
对于(int i=0;i
您可以使用以下功能:
public String repeatEnd(String str, int n) {
if (n == 0)
return "";
String res = re(str, n);
String resl ="";
for (int i =0 ; i < n ; i ++){
resl = resl + res;
}
return resl;
}
public String re(String s , int n){
String end = "";
int len = s.length();
end = s.substring(len-n , len);
return end;
}
publicstringrepeatend(stringstr,intn){
如果(n==0)
返回“”;
字符串res=re(str,n);
字符串resl=“”;
对于(int i=0;i
公共字符串repeatFront(字符串str,int n){
//取一个空字符串
字符串temp=“”;
//检查其是否大于n的零值
而(n>0)
{
//运行for循环并将字符串数据添加到temp string中
对于(inti=0;ipublicstringrepeatfront(stringstr,intn){
//取一个空字符串
字符串temp=“”;
//检查其是否大于n的零值
而(n>0)
{
//运行for循环并将字符串数据添加到temp string中
对于(inti=0;ipublicstringrepeatfront(stringstr,intn){
//取一个空字符串
字符串temp=“”;
//检查其是否大于n的零值
而(n>0)
{
//运行for循环并将字符串数据添加到temp string中
对于(inti=0;ipublicstringrepeatfront(stringstr,intn){
//取一个空字符串
字符串temp=“”;
//检查其是否大于n的零值
而(n>0)
{
//运行for循环并将字符串数据添加到temp string中
对于(inti=0;i你也可以使用这个
public String repeatFront(String str, int n){
int i;
String result = "";
for(i=n; 0<i; i--){
result += str.substring(0,i);
}
return result;
}
publicstringrepeatfront(stringstr,int-n){
int i;
字符串结果=”;
对于(i=n;0你也可以使用这个
public String repeatFront(String str, int n){
int i;
String result = "";
for(i=n; 0<i; i--){
result += str.substring(0,i);
}
return result;
}
publicstringrepeatfront(stringstr,int-n){
int i;
字符串结果=”;
对于(i=n;0你也可以使用这个
public String repeatFront(String str, int n){
int i;
String result = "";
for(i=n; 0<i; i--){
result += str.substring(0,i);
}
return result;
}
publicstringrepeatfront(stringstr,int-n){
int i;
字符串结果=”;
对于(i=n;0你也可以使用这个
public String repeatFront(String str, int n){
int i;
String result = "";
for(i=n; 0<i; i--){
result += str.substring(0,i);
}
return result;
}
publicstringrepeatfront(stringstr,int-n){
int i;
字符串结果=”;
对于(i=n;0您还可以使用Java11String.repeat()
您还可以使用Java11String.repeat()
您也可以使用Java