我想确定两个单链表是否相同。 如果它们相同,则程序应打印匹配的字母。
实施例: 杂音和鞑靼是相同的,因为它们都具有相同的模式" abcabc"。
AAABBCbbaaa和11122322111是相同的
匹配的字母: A↔1 B↔2 C↔3
我必须只使用单个链表。
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Please enter a string:");
String linked1=scanner.nextLine();
System.out.println();
System.out.print("Please enter another string:");
String linked2=scanner.nextLine();
SingleLinkedList SLL1 = new SingleLinkedList();
SingleLinkedList SLL2 = new SingleLinkedList();
for (int i = 0; i < linked1.length(); i++) {
char a=linked1.charAt(i);
a = Character.toLowerCase(a);
SLL1.addToEnd(a);
}
for (int i = 0; i < linked2.length(); i++) {
char a=linked2.charAt(i);
a = Character.toLowerCase(a);
SLL2.addToEnd(a);
}
public class SingleLinkedList{
private Node head;
public SingleLinkedList()
{
head = null;
}
public boolean isEmpty(){
return head == null;
}
public void addToEnd(Object dataToAdd)
{
Node newNode = new Node(dataToAdd);
if(head == null)
{
head = newNode;
}
else
{
Node temp = head;
while(temp.getLink() != null)
{
temp = temp.getLink();
}
temp.setLink(newNode);
}
}
public String display()
{
String output = "";
Node temp = head;
while(temp != null)
{
output += temp.getData() + " ";
temp = temp.getLink();
}
return output;
}
}
答案 0 :(得分:0)
你可以做到,但这是一项繁琐的工作,我没有力气写出实际的代码。
你应该编码(而不是加密)你的序列。
对列表进行编码的一种简单方法是迭代它的值,您选择的每个值都必须根据已经遇到的值进行检查。
如果检查序列中没有该值,则添加该值并继续。
在此结束时,您将获得一系列在找到它们时排序的唯一值。
然后,对于seq的每个元素,您可以找到支票集中的位置,并构建这些位置的新seq。
您对两个序列重复此操作,然后您可以匹配编码序列。
您应该为seq创建一个indexOf方法来简化程序。