手机网站设计背景图片,开发网站步骤是,培训教育的网站怎么做,wordpress 存档过多leetcode 150道题 计划花两个月时候刷完#xff0c;今天#xff08;第七天#xff09;完成了5道(15-19)150#xff1a;
今天这些都是我之前做过的#xff0c;还有就是今天的全都是模拟过程。。所以做的还算快。 15#xff08;13. 罗马数字转整数#xff09; 题目描述今天第七天完成了5道(15-19)150
今天这些都是我之前做过的还有就是今天的全都是模拟过程。。所以做的还算快。 1513. 罗马数字转整数 题目描述
罗马数字包含以下七种字符: I V X LCD 和 M。
字符 数值
I 1
V 5
X 10
L 50
C 100
D 500
M 1000
例如 罗马数字 2 写做 II 即为两个并列的 1 。12 写做 XII 即为 X II 。 27 写做 XXVII, 即为 XX V II 。
通常情况下罗马数字中小的数字在大的数字的右边。但也存在特例例如 4 不写做 IIII而是 IV。数字 1 在数字 5 的左边所表示的数等于大数 5 减小数 1 得到的数值 4 。同样地数字 9 表示为 IX。这个特殊的规则只适用于以下六种情况
I 可以放在 V (5) 和 X (10) 的左边来表示 4 和 9。
X 可以放在 L (50) 和 C (100) 的左边来表示 40 和 90。
C 可以放在 D (500) 和 M (1000) 的左边来表示 400 和 900。
给定一个罗马数字将其转换成整数。第一版直接模拟过程了没有啥算法没有啥技术含量。。想不出来更好的
class Solution {public int romanToInt(String s) {int lens.length();int index0;int sum0;while(indexlen){if(s.charAt(index)I){if(index1lens.charAt(index1)V){sum4;index;} else if(index1lens.charAt(index1)X){sum9;index;}else{sum1;} }else if(s.charAt(index)X){if(index1lens.charAt(index1)L){sum40;index;} else if(index1lens.charAt(index1)C){sum90;index;}else{sum10;} }else if(s.charAt(index)C){if(index1lens.charAt(index1)D){sum400;index;} else if(index1lens.charAt(index1)M){sum900;index;}else{sum100;} }else if(s.charAt(index)V){sum5;}else if(s.charAt(index)L){sum50;}else if(s.charAt(index)D){sum500;}else if(s.charAt(index)M){sum1000;}index;}return sum;}
}16 12. 整数转罗马数字 题目描述 和上面这个一样 这个是数字转罗马数字数字范围为 1 num 3999 第一版还是模拟过程反着来但是这个是leetcode中等题。。上面的是简单题
class Solution {public String intToRoman(int num) {StringBuilder sbnew StringBuilder();while(num!0){if(num1000){int qNumnum/1000;for(int i0;iqNum;i){sb.append(M);}num%1000;}else if(num100){int bNumnum/100;if(bNum9){sb.append(CM);bNum-9;}if(bNum5){sb.append(D);bNum-5;}if(bNum4){sb.append(CD);bNum-4;}for(int i0;ibNum;i){sb.append(C);}num%100;}else if(num10){int sNumnum/10;if(sNum9){sb.append(XC);sNum-9;}if(sNum5){sb.append(L);sNum-5;}if(sNum4){sb.append(XL);sNum-4;}for(int i0;isNum;i){sb.append(X);}num%10;}else if(num1){if(num9){sb.append(IX);num-9;}if(num5){sb.append(V);num-5;}if(num4){sb.append(IV);num-4;}for(int i0;inum;i){sb.append(I);}break;}}return sb.toString();}
}17 58. 最后一个单词的长度 题目描述
给你一个字符串 s由若干单词组成单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。
单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。第一版这题我一看很快很快啊 直接 split 然后return 哈哈哈但是一看解题意思要自己写。。
class Solution {public int lengthOfLastWord(String s) {String[] strss.trim().split( );return strs[strs.length-1].length();}
}第二版算是自己写版其实没必要都有接口了直接用多好希望笔试时候出题人也能这样想。。
class Solution {public int lengthOfLastWord(String s) {char[] charss.toCharArray();int indexchars.length-1;int len0;while(index0){if(chars[index]! ){break;}index--;}while(index0){if(chars[index--]! ){len;}else{break;}}return len;}
}18 14. 最长公共前缀 题目描述
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀返回空字符串 。这个题我知道有个横向和纵向的但是每次想不到横向的。。。 第一版纵向的也是好想到的
class Solution {public String longestCommonPrefix(String[] strs) {if(strs.length1){return strs[0];}for(int i0;istrs[0].length();i){char tempstrs[0].charAt(i);for(int j1;jstrs.length;j){if(istrs[j].length()||strs[j].charAt(i)!temp){return strs[0].substring(0,i);}}}return strs[0];}
}第二版横向的我感觉有种逆思维的感觉不是每次能想出来他是用其中一个去和剩下的求最长公共序列然后再用求出来公共序列再去和剩下的求想法很好但不是很好想
class Solution {public String longestCommonPrefix(String[] strs) {// 在写一下横向的 每次都想不起来横向的if(strsnull||strs.length0){return ;}int countstrs.length;if(count1){return strs[0];}String preStringstrs[0];for(int i1;icount;i){preStringcommonPrefix(preString,strs[i]);if(preString.length()0){return preString;}}return preString;}public String commonPrefix(String str1,String str2) {int len1str1.length();int len2str2.length();int index0;while(indexlen1indexlen2str1.charAt(index)str2.charAt(index)){index;}return str1.substring(0,index);}
}19 151. 反转字符串中的单词题目描述
给你一个字符串 s 请你反转字符串中 单词 的顺序。
单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。
返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。
注意输入字符串 s中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中单词间应当仅用单个空格分隔且不包含任何额外的空格。第一版这个题也有种让自己去实现已经有的api我只写了一版没有写自己实现的api…感觉太麻烦了有就用就行了。。
class Solution {public String reverseWords(String s) {String[] strss.trim().split( );int lenstrs.length;ListString tempnew ArrayList();for(int ilen-1;i0;i--){if(!.equals(strs[i])){temp.add(strs[i]);}}// 这个方法真的用的时候很多。。return String.join( ,temp);}
}加油早点跳槽今天就是把之前写过的回顾了一边还行简单的没忘。。哦我没有写困难的题目。。 早日跳槽