当前位置:网站首页 > 更多 > 编程开发 > 正文

[算法刷题] 试题 算法提高 递归倒置字符数组

作者:CC下载站 日期:2020-03-19 00:00:00 浏览:59 分类:编程开发

资源限制时间限制:1.0s 内存限制:512.0MB问题描述  完成一个递归程序,倒置字符数组。并打印实现过程
  递归逻辑为:
  当字符长度等于1时,直接返回
  否则,调换首尾两个字符,在递归地倒置字符数组的剩下部分输入格式  字符数组长度及该数组输出格式  在求解过程中,打印字符数组的变化情况。
  最后空一行,在程序结尾处打印倒置后该数组的各个元素。样例输入
Sample1
5abcde
Sample2
1a




样例输出


Sample1
ebcda
edcba
edcba
Sample2
a



看了下题目,忽略了需要打印转换过程,然后直接用字符串了。

importjava.util.*;
publicclassdiguidaozhi{

	/**
	*@paramargs
	*试题算法提高递归倒置字符数组
	*/
	publicstaticvoidmain(String[]args){
		//TODOAuto-generatedmethodstub
		Scannersc=newScanner(System.in);
		intn=sc.nextInt();
		Stringstr=sc.next();
		StringBuilderjieguo=newStringBuilder();
		System.out.println(result(str,jieguo));;
	}
	staticStringBuilderresult(Stringstr,StringBuilderjieguo){
		if(str.length()==1){
			jieguo.append(str);
			returnjieguo;
		}else{
			jieguo.append(str.charAt(str.length()-1));
			result(str.substring(0,str.length()-1),jieguo);
			returnjieguo;
		}
		
	}

}

然后这才是正确答案:

importjava.util.*;
publicclassdgdzzfsz{

	/**
	*@paramargs
	*试题算法提高递归倒置字符数组
	*/
	publicstaticvoidmain(String[]args){
		//TODOAuto-generatedmethodstub
		Scannersc=newScanner(System.in);
		intn=sc.nextInt();
		char[]list=newchar[n];
		Stringstr=sc.next();
		//将字符串录入字符数组
		for(inti=0;i<str.length();i++){
			list[i]=str.charAt(i);
		}
		zhuanzhi(list,0,list.length-1);
	}
	
	staticvoidzhuanzhi(char[]list,inti,intj){
		//如果长度为1,直接返回
		if(list.length==1){
			System.out.println();
			System.out.println(list[0]);
		}else{
			//首尾交换
			if(i<list.length/2){
				chartemp=list[j];
				list[j]=list[i];
				list[i]=temp;
				System.out.println(list);
				i++;
				zhuanzhi(list,i,list.length-i-1);
			}else{
				System.out.println();
				System.out.println(list);
			}
		}
	}

}


您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯