Java 题
1.两数之和
2.整数反转
3.判断是否为回文数:
思路:可以先提取出后半部分数字,
通过 x%10,取余,从后往前取出数字。x/10,取模,保存每次取出数字后的数字。reverse = reverse * 10 + pop; 来保存每次反转后的数字。
通过语句当x<reverse时,说明数字已经对半。如果是偶数的话,reverse和x相等;如果是奇数的话,最中间的数字就在reverse的最低位上,将它除以10以后应该和x相等。
class Solution { public boolean isPalindrome(int x) { //思路:反转后半部分数字 int reverse = 0; if(x<0 || (x%10==0 && x!=0)) return false; while (x>reverse){ //判断当x<reverse时,明数字已经对半。 int pop = x%10; reverse= reverse*10 + pop; x = x/10; } return (x==reverse || x==reverse/10); //如果是偶数的话,reverse和x相等;如果是奇数的话,最中间的数字就在reverse的最低位上,将它除以10以后应该和x相等。 } }
4.查找字符串数组中最长公共前缀:
思路:利用两个函数:a.函数 startsWith(String str):判断某个字符串是否以str为开头; b.函数 substring(int beginIndex, int endIndex):截取字符串的一部分,注意endIndex不取。
先定义一个新字符串prefix用来保存最长公共前缀,然后利用for循环从前往后遍历每一个字符,当与prefix不同时,即不以prefix开头时,就截断prefix最后一个字符,如此循环便可得。
class Solution { public String longestCommonPrefix(String[] strs) { //函数`substring(int beginIndex, int endIndex)`:截取字符串的一部分,注意endIndex不取 //函数`startsWith(String str)`:判断某个字符串是否以str为开头 if(strs.length == 0) return ""; String prefix = strs[0]; //prefix保存最长公共前缀,初始化为strs[0] // for(String temp:strs){ //增强型for循环 for(int i=0;i<strs.length;i++){ String temp=strs[i]; while(!temp.startsWith(prefix)){ //当temp与prefix不等即不以prefix开头时, prefix=prefix.substring(0,prefix.length()-1); //就截断prefix最后一个字符 } } return prefix; } }
5.罗马数字转整数
思路:1.首先将组合的可能列出并添加到哈希表中;2.对字符串进行遍历,由于组合只有两种,一种是1个字符,一种是2个字符,其中2个字符优先于1个字符;3.先判断两个字符的组合在哈希表中是否存在,存在则将值取出加到结果 ans 中,并向后移2个字符。不存在则将判断当前1个字符是否存在,存在则将值取出加到结果 ans 中,并向后移1个字符;4.遍历结束返回结果 ans。
class Solution { public int romanToInt(String s) { HashMap<String, Integer> map = new HashMap<>(); map.put("I", 1); map.put("IV", 4); map.put("V", 5); map.put("IX", 9); map.put("X", 10); map.put("XL", 40); map.put("L", 50); map.put("XC", 90); map.put("C", 100); map.put("CD", 400); map.put("D", 500); map.put("CM", 900); map.put("M", 1000); int ans = 0; for(int i = 0;i < s.length();) { if(i + 1 < s.length() && map.containsKey(s.substring(i, i+2))) { ans += map.get(s.substring(i, i+2)); i += 2; } else { ans += map.get(s.substring(i, i+1)); i ++; } } return ans; } }

浙公网安备 33010602011771号