简单的密码破译游戏

题目描述
我们来做一个简单的密码破译游戏。破译的规则很简单,将数字转换为字母,1转化为a,2转化为b,依此类推,26转化为Z。现在输入的密码是一串数字,输出的破译结果是该数字串通过转换规则所能产生的所有字符串。
输入
多行数据,每行为一个数字串。
输出

多行数据,每行对应输出通过数字串破译得到的所有字符串,并按照字符串顺序排列,字符串之间用单个空格分隔。每行开头和结尾不允许有多余的空格。

总体思路,用递归算法,把长字符串变成短字符串,直到长度为2或1为止

package view;

import java.util.Scanner;

public class Test {	
	String output = "";
	int asc=(int)'a'-1;
	public String f1(String string,String temp) {	
		if(string.length()==1) {
			output+=temp+(char)(asc+Integer.parseInt(string))+" ";
			return string;
		}
		temp += (char)(asc+Integer.parseInt(string.substring(0,1)));
//		temp += string.substring(0,1)+",";
		f1(string.substring(1,string.length()),temp);
		f2(string.substring(1,string.length()),temp);
		return string.substring(0,1);
	}
	public String f2(String string,String temp) {
		if(string.length()==2) {
			if(Integer.parseInt(string)>26){
				return "";
			}
			output+=temp+(char)(asc+Integer.parseInt(string))+" ";
			return string;
		}
		if(string.length()<2) {
			return "";
		}
		if(Integer.parseInt(string.substring(0,2))>26){
			return "";
		}
		temp += (char)(asc+Integer.parseInt(string.substring(0,2)));
//		temp += string.substring(0,2)+",";
		f1(string.substring(2,string.length()),temp);
		f2(string.substring(2,string.length()),temp);
		return string.substring(0,2);
	}
	 public static void main(String[] args){
	    	Test test =new Test();	
	    	Scanner input = new Scanner(System.in);
//	    	for(;;) {
	    	String string = input.nextLine();
	    	String temp="";
	    	test.output = "";
	    	test.f1(string,temp);
	    	test.f2(string,temp);
	    	System.out.println(test.output.trim());
//	    	}
	    }
}


猜你喜欢

转载自blog.csdn.net/huazicomeon/article/details/80210382