我創建了一個程序,從文件中讀取String
,並檢查它是否是迴文。現在我需要改變它來檢查載體是否是迴文。我必須創建幾個載體並檢查它們是否是迴文。說我有以下載體檢查多個向量是否是palindromatic?
(1,2,3), (1,1,1), (2,2,2), (2,2,2), (1,1,1), (1,2,3)
該計劃將使用兩個迭代器,並檢查首先是等於最後,如果第二等於倒數第二個,依此類推。這是我的String
輸入程序:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Stack;
import java.util.Vector;
public class Project4
{
public static void main(String[] args) throws IOException
{
Vector v1 = new Vector(3);
Vector v2 = new Vector(3);
Vector v3 = new Vector(3);
Vector v4 = new Vector(3);
ArrayList vectors = new ArrayList();
v1.add(1);
v1.add(2);
v1.add(3);
v2.add(1);
v2.add(1);
v2.add(1);
v3.add(1);
v3.add(1);
v3.add(1);
v4.add(1);
v4.add(2);
v4.add(3);
vectors.add(v1);
vectors.add(v2);
vectors.add(v3);
vectors.add(v4);
if (isPalindrome(vectors))// If true, it's a palindrome
System.out.println("That is a palindrome.");
else // otherwise, it's not
System.out.println("That is not a palindrome.");
}
public static boolean isPalindrome(ArrayList vectors)
{
// Make a new queue, stack, and character object
Queue<Vector> q = new LinkedList<>();
Stack<Vector> s = new Stack<>();
for(int i = 0; i < vectors.size(); i++){
q.add((Vector) vectors.get(i));
s.add((Vector) vectors.get(i));
}
Vector temp = new Vector();
int mismatches = 0;
for (int i = 0; i < vectors.size(); i++)
{
temp = (Vector) vectors.get(i);
if (vectors.get(i).equals(vectors.get(i)))
{
q.add(temp);
s.push(temp);
}
}
while (!q.isEmpty())
{
if (q.remove() != s.pop())
mismatches++; // Increment "mismatches" if q != s
}
return (mismatches == 0); // will return true if the method did not change the variable "mismatches"
}
}
Upvoted。這是測試是否迴文的「標準」方法。清晰,評論良好。 – Keeler
這適用於您製作的數組內部的數字,但我必須檢查一組向量是否是palindromatic。所以,一個數組需要被向量填充,每個向量可能包含3個獨立的數字,然後它必須檢查第一個和最後一個向量是否相同,第二個和第二個向量等。所以(1,2, 3)和(1,2,3)是相等的,如果我們在陣列中只有那兩個我需要檢查迴文,那麼它將是palindromatic。最重要的是,我必須在is_palindrome方法中使用隊列和堆棧。 –
可能包含3個,或者肯定包含3個?有所作爲。此外,這聽起來像作業或如果你有**使用堆棧和隊列的東西。 – Keeler