Remove K Digits & Is Palindrome & Roman to Integer
Updated:
Contents
停了2天,补上。二三题是水题。
找出符合题意的上升子序列,如果第一位为0就舍弃。
1 | public static String removeKdigits(String num, int k) { |
判断一个数是不是回文数(可以优化,不用判断全部长度,按奇偶判断。)
1 | public static boolean isPalindrome(int x) { |
将一个不超过3999的罗马数字转化为整数。
import java.util.*;
public class Solution {
public int romanToInt(String s) {
Map<String, Integer>roman = new HashMap<String, Integer>();
roman.put("I", 1);
roman.put("V", 5);
roman.put("X", 10);
roman.put("L", 50);
roman.put("C", 100);
roman.put("D", 500);
roman.put("M", 1000);
int c = roman.get(""+s.charAt(0));
for(int i = 1; i < s.length(); i++){
if(roman.get(""+s.charAt(i)) > roman.get(""+s.charAt(i-1)) && ((s.charAt(i-1) == 'I') || (s.charAt(i-1) == 'X') ||(s.charAt(i-1) == 'C'))){
c += roman.get(""+s.charAt(i));
}else{
c += roman.get(""+s.charAt(i)) - 2 * roman.get(""+s.charAt(i));
}
}
return c;
}
}
* Nim Game
一堆石子可以拿1,2,3个,给你一堆石子,看能赢的最大几率。
想起了小时候的抢24…只要你和对方的和每次是4的倍数,肯定是你赢。
public boolean canWinNim(int n) {
return n % 4 == 0;
}