1.3.4
import java.util.Arrays;
import java.util.Scanner;
import java.util.Stack;
public class Judge_Brackets_Whether_Match_Use_Stack {
/**
* 判斷多對括號是否匹配 利用stack實現
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
boolean flag = false;
Stack<String> stack = new Stack<String>();
System.out.println("plase input brackets string...");
Scanner input = new Scanner(System.in);
String str = input.next();
char[] a = str.toCharArray();
int len = a.length;
String[] s = new String[len];
for(int i=0; i<len; i++){
s[i] = a[i]+"";
}
for(int i=0; i<s.length; i++){
if(s[i].equals("[") || s[i].equals("(") || s[i].equals("{")){
stack.push(s[i]);
}
else if(s[i].equals("]")){
String temp = stack.pop();
if(temp.equals("[")){
flag = true;
}
else{
flag = false;
}
}
else if(s[i].equals("}")){
String temp = stack.pop();
if(temp.equals("{")){
flag = true;
}
else{
flag = false;
}
}
else if(s[i].equals(")")){
String temp = stack.pop();
if(temp.equals("(")){
flag = true;
}
else{
flag = false;
}
}
}
System.out.println(flag);
}
}
1.3.14
import java.util.Iterator; import java.util.NoSuchElementException; public class ResizingArrayQueueOfStrings implements Iterable<String>{ /** * 使用定長數組實現隊列 * 使用調整數組的方法突破大小的限制 * 瞭解隊列的性質以及如何實現數組的大小調整 */ private int N=0; private int head=0; private int tail=0; private String[] str; public ResizingArrayQueueOfStrings(int cap){ str = new String[cap]; } public boolean isEmpty(){ return N == 0; } public int size(){ return N; } public void reverse(int max){ String[] temp = new String[max]; for(int i=0; i<str.length; i++){ temp[i] = str[i]; head = 0; tail = N; str = temp; } } public void enqueue(String string){ if(N == str.length){ reverse(2*str.length); } str[tail++] = string; N++; } public String dequeue(){ if(isEmpty()){ throw new NoSuchElementException("the queue is null"); } String string = str[head]; N--; head++; return string; } public Iterator<String> iterator(){ return new ReverseArrayIterator(); } private class ReverseArrayIterator implements Iterator<String>{ private int i=0; public boolean hasNext(){ return i < N; } public String next(){ return str[i++]; } public void remove(){} } public static void main(String[] args) { ResizingArrayQueueOfStrings queue = new ResizingArrayQueueOfStrings(10); for(int i=0; i<10; i++){ queue.enqueue("hello"+i); } System.out.println(queue.size()); Iterator<String> itr = queue.iterator(); while(itr.hasNext()){ String str = itr.next(); System.out.print(str+" "); } System.out.println(); System.out.println(queue.dequeue()); } }