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