算法第四版版參考答案

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());
	}
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章