gpt4 book ai didi

java - 用java解密加密文本

转载 作者:行者123 更新时间:2023-12-02 04:00:15 25 4
gpt4 key购买 nike

我有一个任务。我已经完成了作业的所有部分。但我对我的作业的以下部分感到震惊。你能帮我吗

作业指南

III.为EncryptedNode类编写一个构造方法。此构造函数应采用 String 作为参数。与您编写的其他构造函数不同,此构造函数应该有条件地运行。如果消息只有一个字符长,只需将该字符分配给 letter 实例变量即可。如果消息有两个字符长,则将第一个字符分配给字母,将另一个字符作为字符串分配给右侧的 EncryptedNode。在任何其他情况下,找到输入字符串的中间值,将第一个索引处的字符分配给字母,字符

从1到中间的字符应该去右边的EncryptedNode,剩余的无人认领

字符应位于左侧 EncryptedNode。注意:您将实例化新的 EncryptedNode 对象这个构造函数,从而创建一个递归构造。

四。编写以下方法:

a.解密方法不带参数并返回一个字符串。此方法应通过递归添加每个 EncryptedNode 的字母、左侧和右侧元素来重新构建原始未加密的字符串。这个过程就留给你自己解决了。

我的示例代码是

class EncryptedNode {

public EncryptedNode left, right ;
public char letter ;


// EncryptedNode Class constructor method.
public EncryptedNode (String message) {

// get String length
int message_length = message.length() ;

if (message_length == 1) {
this.letter = message.charAt(0) ;
}else if (message_length == 2) {
this.letter = message.charAt(0) ;
this.right = new EncryptedNode (message.substring(1));
} else {
this.letter = message.charAt(0) ;

// get the middle index of the message string.
int middle_index = message.substring(1).length() /2 ;

// get left and right strings
String rightStr = message.substring(1,middle_index+1);
String leftStr = message.substring(middle_index+1);

this.left = new EncryptedNode (leftStr);
this.right = new EncryptedNode (rightStr);
}

System.out.println (this.letter);
// System.out.println (this.right);

}


public static void main (String [] args) {

EncryptedNode en = new EncryptedNode("ABCDEF") ;

en.decrypt();
}

public String decrypt () {
if (this.left == null && this.right==null) {
return this.letter;
}else if (this.left == null && this.right != null) {
return this.letter + this.right;
}else if (this.left !=null && this.right != null) {
return this.left + this.letter + this.right;
}
}

}

最佳答案

我不会为您编写代码,因为这是一项类作业,但我可以解释您应该如何解决它。

您想要通过加密方法逆向工作以解密它。现在,无论加密的字符串是什么,您都只是返回“st”。

我之前看错了代码。这是一种递归方法,因此您必须从底部开始并逐步向上。您必须解密左侧,然后解密右侧并将它们加在一起。

在解密方法中,您必须递归调用 this.left.decrypt();this.right.decrypt(); 直到到达基数案件。基本情况是左侧和右侧都等于 null 时。那时你只需退回这封信即可。这是递归的底部。

因此,要编写解密方法,您需要返回 this.left.decrypt() + this.letter + this.right.decrypt();除非 this.left 或 this.right空。

如果 this.right 为 null,您将返回 this.letter;

如果 this.left 为 null,则返回 this.letter + this.right.decrypt();

很抱歉最初的困惑,我认为这是一项比实际更容易的任务。

希望这次我能帮上忙!

解决方案:

public String decrypt () {

if (this.right == null) {
return this.letter;
}
if (this.left == null) {
return this.letter + this.right.decrypt();
}
return this.left.decrypt() + this.letter + this.right.decrypt();
}

关于java - 用java解密加密文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35006707/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com