String 使用java递归地从字符串中删除字符
我试图用递归方法编写一个程序,对给定的字符串“Sluggo”执行以下操作 这是我目前的计划:String 使用java递归地从字符串中删除字符,string,recursion,String,Recursion,我试图用递归方法编写一个程序,对给定的字符串“Sluggo”执行以下操作 这是我目前的计划: import java.util.Scanner; public class RecursiveDescentParser { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("Please enter a string:
import java.util.Scanner;
public class RecursiveDescentParser {
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
System.out.println("Please enter a string: ");
String s = input.next();
chopBack(s.substring(0));
chopBack(s.substring(1));
chopBack(s.substring(2));
chopBack(s.substring(3));
chopBack(s.substring(4));
chopBack(s.substring(5));
}//end of main
public static String chopBack(String str)
{
if (str.length() == 0)
return "";
else
System.out.println(str.substring(0, str.length()));
return chopBack(str.substring(0, str.length() - 1 ));
}
}
我知道这不对,因为我需要编写类似于双重递归方法的东西。只是想知道从这一点上我应该去哪里?我还编写了一个从字符串前面删除char的方法。在这一点上,我不太确定如何将两者连接在一起哈哈 在这里:
public String run(String input) {
StringBuilder sb = new StringBuilder();
process(input, sb);
return sb.toString();
}
private void process(String input, StringBuilder sb) {
tail(input, sb);
if (input.isEmpty()) {
sb.deleteCharAt(sb.length() - 1);
return;
}
process(input.substring(1, input.length()), sb);
}
private void tail(String input, StringBuilder sb) {
if (input.isEmpty())
return;
sb.append(input).append('\n');
tail(input.substring(0, input.length() - 1), sb);
}
这是:
public String run(String input) {
StringBuilder sb = new StringBuilder();
process(input, sb);
return sb.toString();
}
private void process(String input, StringBuilder sb) {
tail(input, sb);
if (input.isEmpty()) {
sb.deleteCharAt(sb.length() - 1);
return;
}
process(input.substring(1, input.length()), sb);
}
private void tail(String input, StringBuilder sb) {
if (input.isEmpty())
return;
sb.append(input).append('\n');
tail(input.substring(0, input.length() - 1), sb);
}
导入java.util.Scanner /** *@author JFVARUGH * */ 公共类递归StringREM{
static String str ;
public static void main(String[] args) {
// TODO Auto-generated method stub
RecursiveStringRem drive = new RecursiveStringRem();
Scanner sc = new Scanner(System.in);
System.out.println("Input the String");
str = sc.nextLine();
drive.superStringCall(str);
}
public void truncateSingleString(String str){
// Base Condition
if(str.length()==1){
System.out.println(str);
return;
}
// Recursive Call
System.out.println(str);
// This will truncate the string by one position
truncateSingleString(str.substring(1));
}
public void superStringCall(String str){
//Base Condition
if(str.length()==1){
return;
}
// Recursive Call
System.out.println(str);
// This will call the previous function
truncateSingleString(str.substring(1));
// Recursive call in the current function
superStringCall(str.substring(1));
}
}
我想这些评论是不言自明的
这是一个编译代码。导入java.util.Scanner /** *@author JFVARUGH * */ 公共类递归StringREM{
static String str ;
public static void main(String[] args) {
// TODO Auto-generated method stub
RecursiveStringRem drive = new RecursiveStringRem();
Scanner sc = new Scanner(System.in);
System.out.println("Input the String");
str = sc.nextLine();
drive.superStringCall(str);
}
public void truncateSingleString(String str){
// Base Condition
if(str.length()==1){
System.out.println(str);
return;
}
// Recursive Call
System.out.println(str);
// This will truncate the string by one position
truncateSingleString(str.substring(1));
}
public void superStringCall(String str){
//Base Condition
if(str.length()==1){
return;
}
// Recursive Call
System.out.println(str);
// This will call the previous function
truncateSingleString(str.substring(1));
// Recursive call in the current function
superStringCall(str.substring(1));
}
}
我想这些评论是不言自明的
这是一个编译代码。太棒了,谢谢你们 只是和一个朋友玩了一下,这是他在c中提出的解决方案#
太棒了,谢谢你们 只是和一个朋友玩了一下,这是他在c中提出的解决方案#
看起来不错,但输出不太正确:)谢谢你的灵感!我想让str成为静态会解决我的很多问题!看起来不错,但输出不太正确:)谢谢你的灵感!我想让str成为静态会解决我的很多问题!看起来棒极了!我真的应该更多地使用字符串生成器哈哈哈。看起来棒极了!我真的应该更经常地使用字符串生成器哈哈哈。