string
文章平均质量分 52
bsbcarter
这个作者很懒,什么都没留下…
展开
-
LeetCode-Longest Substring Without Repeating Characters
This question belong to the same category as those such as "longest substring without repeating characters", "minimum window substring", and "substring with concatenation of all words". To solve thi原创 2015-03-10 01:29:10 · 305 阅读 · 0 评论 -
*LeetCode-Longest Palindromic Substring
每次从一个位置开始 两个指针都指向这个char 然后向两侧extend 直到不是palin 这种是单数位的 然后更新max 和 start(max 和start 是一个static的) 然后再用i, i+1开始extend 这种就是偶数位的 public class Solution { public int start, maxLen; public String longe原创 2015-10-02 05:30:23 · 234 阅读 · 0 评论 -
LeetCode-Length of Last Word
很直接 注意corner "" " " "a " public class Solution { public int lengthOfLastWord(String s) { if ( s == null || s.length() == 0) return 0; int length = s.length();原创 2015-09-16 07:34:00 · 219 阅读 · 0 评论 -
LeetCode-Summary Ranges
注意循环的结束点 最后一个数字还没有加进去 所以循环后继续做一遍 public class Solution { public List summaryRanges(int[] nums) { List list = new ArrayList(); if ( nums == null || nums.length == 0) re原创 2015-09-17 08:34:57 · 236 阅读 · 0 评论 -
*LeetCode-Word Ladder
bfs的思想 每次从队头拿一个词 从词的第一个字母开 vary from a to z 然后判断是否和end相等 相等就返回length 不等就判断这个新造的词是否在词典里 假如在就remove from dict 并且add to queue 每次这个que里存在的是同一个level的 都循环完了再len++ public class Solution { public原创 2015-10-06 03:00:41 · 258 阅读 · 0 评论 -
*LeetCode-Integer to Roman
http://www.factmonster.com/ipka/A0769547.html 暴力枚举1-10 20 30..100 200 300 ....1000 注意返回值里面怎样得到每一位的值 记得除以此位再取模 public class Solution { public String intToRoman(int num) { String [] one原创 2015-09-18 05:11:12 · 249 阅读 · 0 评论 -
LeetCode-Add Binary
首先把两个string对齐 用0填充前面 然后从后面开始每一位相加 记录得数和进位 将得数插入stringbuilder 注意char和int之间的转换 yao y原创 2015-09-17 04:42:14 · 220 阅读 · 0 评论 -
LeetCode-Isomorphic Strings
直接的方法就是想到了用两个hashmap 记录每个的id,即第几个出现的unique字母,再出现这个字母的时候 它的id就去map里面查看 出现新的字母 id ++ 然后判断此时这两个string的对应字母的id是否一致 public class Solution { public boolean isIsomorphic(String s, String t) {原创 2015-09-17 04:12:54 · 275 阅读 · 0 评论 -
*LeetCode-Reverse Words in a String II
首先把整个string reverse 然后每个词再reverse 或者先每个词reverse 再整个reverse 注意最后一个词要记得reverse 这也是只有一个词的coner case的情况 public class Solution { public void reverseWords(char[] s) { reverse( s, 0, s.length -原创 2015-10-22 09:08:13 · 290 阅读 · 0 评论 -
LeetCode-Valid Anagram
数两个string的各个字母个数,然后比较两个计数的数组每一位是否一样 public class Solution { public boolean isAnagram(String s, String t) { int [] sArr = new int [26]; int [] tArr = new int [26]; if (s.le原创 2015-09-15 19:13:12 · 237 阅读 · 0 评论 -
*LeetCode-Different Ways to Add Parentheses
不用考虑括号不括号的问题 想成了stack就错了 应该用分治递归 每次遇到一个运算符就把string两边分开分别递归计算 得到两个list 然后这两个list里面的结果根据这个符号排列组合计算 最后corner case是不存在括号 即list为空 直接把string add进去 public class Solution { public List diffWaysToComput原创 2015-10-02 08:37:53 · 245 阅读 · 0 评论 -
*LeetCode-Largest Number
string有一个函数是compareTo 比较两个string大小 先比长度 然后每一位比 直到一个比一个大 所以写了一个comparator 但是注意要用两个string先前后加起来 使长度一样 才有可比性 public class Solution { public String largestNumber(int[] nums) { if ( nums ==原创 2015-10-02 06:34:54 · 265 阅读 · 0 评论 -
LeetCode-String to Integer (atoi)
corner case很多需要注意 1.这个题规定前后的white space都忽略掉 可以有正负号 但是后面就不可以有特殊符号了 比如 +182@#¥ 就返回+182 2. 注意得到数值 是用 c - '0' 3.超int范围的 min max 尤其是负数超范围 因为最开始先把符号存起来 当正数对待了 所以要在过程中判断是否超了max 但是是否是正的min public class S原创 2015-06-03 05:48:25 · 304 阅读 · 0 评论 -
*LeetCode-Letter Combinations of a Phone Number
错好多 recursive的下次再写吧 最严重的错误就是 每次循环想要把原来list里面每个string都加一个字母的时候 注意list要重新建 不能for each str in list 然后再里面又在这同一个list上面操作 public class Solution { public List letterCombinations(String digits) {原创 2015-09-25 10:05:18 · 241 阅读 · 0 评论 -
*LeetCode-Unique Word Abbreviation
这个题也很简单 但是要想全可能存在的情况 所以假如只有hello 那hello是可以的 或者根本dict里面没有这个词 也没有这个词的abb也是可以的 我用了map of string and int 来count有几个这样的abb 还用了一个set来记录dict里面的词 这样很浪费 简便方法是用abb做key 但是value就用dict里面的词本身 假如第二次碰到这个abb了 那么把valu原创 2015-10-17 09:03:54 · 473 阅读 · 0 评论 -
LeetCode-Group Shifted Strings
不难 只是细节很多 map list等的细节还是需要背啊 public class Solution { public List> groupStrings(String[] strings) { HashMap, List> map = new HashMap, List>(); for ( int i = 0; i < strings.length;原创 2015-10-17 07:46:16 · 752 阅读 · 0 评论 -
*LeetCode-Palindrome Permutation
这个题本身没啥 只是实现的时候 我一般就会用array 26来count 当然这个题不是只有小写字母 所以用了hashmap 看答案的话用set更方便 就是每次假如已经有了就remove 没有就add 这样保证一对一对的都已经remove了 最后set剩下一个或者没有剩下的话就是对的 public class Solution { public boolean canPermutePa原创 2015-10-17 01:36:05 · 263 阅读 · 0 评论 -
*LeetCode-Multiply Strings
就像正常的乘法一样 存下来结果的每一位 存成一个int array 然后处理一下大于十的 累加到前一位 然后就concat成string 但是注意前面很多0 不能加 但是假如全是0 就要返回0 public class Solution { public String multiply(String num1, String num2) { int len1 = num原创 2015-10-01 09:42:17 · 228 阅读 · 0 评论 -
**LeetCode-Basic Calculator
这个方法很巧妙 但是很容易出错 每次记录这次的符号或者数字 但是进行的运算是上一次的 并且很巧妙的是用sign来记录上一个是+ 还是- sign为 1 或者 -1 下次乘到结果上 然后就是注意数字可能不是个位的 要乘以十累加 还有最后一个数字不要忘了加上去 假如遇到( 就要将当前结果和sign push 同时要给res和sign reset )的时候要先进行括号里面的最后一次运算原创 2015-10-01 07:38:48 · 289 阅读 · 0 评论 -
LeetCode-Evaluate Reverse Polish Notation
因为是很标准的两个oprand 一个operator 所以很简单 但是注意string compare不能用==!!!要用equals 外加注意-和/的顺序 public class Solution { public int evalRPN(String[] tokens) { Stack stack = new Stack (); for (原创 2015-10-01 08:38:44 · 218 阅读 · 0 评论 -
LeetCode-Simplify Path
这个题只要搞清楚什么是unix的path格式就好 就是后面没有/ 除了字母等有意义的字符以外 只有..有用 就是向上的意思 所以用stack 不是..也不是无用的就push 遇到..就pop 最后把stack里面的连起来 注意corner case 就是stack为空 但是遇到了。。 无法pop 但是也要忽略。。 public class Solution { public S原创 2015-10-02 04:43:43 · 225 阅读 · 0 评论 -
*LeetCode-Interleaving String
2d 动归 boolean matrix 每一位看左边或者上面 上面的话t [ i - 1 ] [ j ] == true && s2.charAt ( j ) == s3.charAt( i + j )就说明 t[ i ] [ j ] = true 同理左边假如符合也可以 但是要注意初始化 要多出来一行一列代表一边假如是空string的情况 然后这样的实际代码里面 index实际就不是从0开始原创 2015-10-11 07:00:54 · 336 阅读 · 0 评论