Discuss / Java / 第一题以前用 StringBuidler 写过,这次练习下双端队列

第一题以前用 StringBuidler 写过,这次练习下双端队列

Topic source
/*
  主要是练习使用双端队列实现入栈出栈从而实现 16 进制 查表的转换
*/
package generic;

import java.util.Deque;
import java.util.LinkedList;
import java.util.NoSuchElementException;

import org.junit.Test;

public class StackDemo {
	
	@Test
	public void test(){
		System.out.println(StackDemo.toHex(60));
	}
	public static String toHex(Integer num){
		Deque<Character> deq = new LinkedList<Character>();
		char[] digits = new char[16];
		for(int i=0;i<16;i++){
			if(i<10) digits[i] = (char)(i+'0');
			else{
				digits[i] = (char)('A'+i-10);
			}
		}
        while(num>0){
	        int mod = num%16;
	        deq.push(digits[mod]); // 双端队列查表法 实现 16 进制的转换
	        num /= 16;
        }
        
        StringBuilder sb = new StringBuilder();
        while(true){
        	try{
        		sb.append(deq.pop()+"");
        		}catch(NoSuchElementException ex){
//        			ex.printStackTrace();
        			break;
        		}
        }
        
        sb.insert(0, "0x");
//        String hexPrefix = sb.substring(sb.length()-2);
		return sb.toString();
	}
}


  • 1

Reply