第四天

1. StringIntegerToRoman

非常好的写法,重点在于1递归的使用,2用if来实现从大到小的查找,3Advance for 的使用。

package LeeCodeCrack;
import java.util.*;

public class StringIntegerToRoman {
    
    private static LinkedHashMap<Integer,String> numToRoman=new LinkedHashMap<Integer,String>();
    static{
        numToRoman.put(1000, "M");
        numToRoman.put(900, "CM");
        numToRoman.put(500, "D");
        numToRoman.put(400, "CD");
        numToRoman.put(100, "C");
        numToRoman.put(90, "XC");
        numToRoman.put(50, "L");
        numToRoman.put(40, "XL");
        numToRoman.put(10, "X");
        numToRoman.put(9, "X");
        numToRoman.put(5, "V");
        numToRoman.put(4, "IV");
        numToRoman.put(1, "I");
    }
    //Recursion
    //The reason of using recuision is to ensure the function always started from the beginning
    //For each element
    
    public static String intToRoman(int num){
        for (Integer i:numToRoman.keySet()){
            //if(num>=1)ensure it always starts from the top of the list
            if(num>=i){
                return numToRoman.get(i)+intToRoman(num-i);
            }
        }
        return " ";
    }
    
    public static void main (String[] args){
        int num=2307;
        System.out.println(intToRoman(num));
    }
}

2. StringCountAndSay

package LeeCodeCrack;

public class StringCountAndSay {

    public static String NumberLargerThan1(String s) {
        StringBuffer ss=new StringBuffer();
        int count=0;
        for(int i=0;i<s.length();i++){
            if(i==0||s.charAt(i)==s.charAt(i-1)){
                count++;
                if(i==s.length()-1){
                    ss.append(count);
                    ss.append(s.charAt(s.length()-1));
                    return ss.toString();
                }
            }else{
                ss.append(count);
                ss.append(s.charAt(i-1));
                count=1;
                
            }
        }
        //The last number condition
        //because of the if, if 
        //ss.append(count);
        //ss.append(s.charAt(s.length()-1));
        
        return ss.toString();
        
    }
    private static void elseif(boolean b) {
        // TODO Auto-generated method stub
        
    }
    public static void main (String[] args){
        int num=123455;
        String s=Integer.toString(num);
        System.out.println(NumberLargerThan1(s));
    }

}

 3. String Reverse Word

package LeeCodeCrack;
import java.util.*;
public class StringReverseWord {

    public static String ReverseWord(String s) {
        if(s==null||s.length()==0) return " ";
        //split divide the string into pieces
        String[] words=s.split(" ");
        if(words.length==0) return " ";
        //Create a StringBuffer 
        StringBuffer sb=new StringBuffer();
        //Create a string in backwards order
        for(int i=words.length-1;i>=0;i--){
            sb.append(words[i]);
            sb.append(" ");
        }
        return sb.toString();
    }
    
    public static void main (String[] args){
        String a ="Hello How Are You";
        System.out.println(ReverseWord(a));
    }

}

 

posted on 2016-05-01 10:05  ChrisYY  阅读(288)  评论(0)    收藏  举报