EASY:
344
387. First Unique Character in a String
public int firstUniqChar(String s) { int[] buctet=new int[26]; int index=0,i=0; for(i=0;i<s.length();i++) { index=s.charAt(i)-'a'; buctet[index]++; } for(index=0;index<26;i++) { if(buctet[index]==1) return index; } return -1; }
-------第二个循环处,不是检查每一个bucket,而且找的也不是这个字符,而是这个字符在字符串中的位置。
for(i=0;i<s.length();i++) { if(buctet[s.charAt(i)-'a']==1) return i; }
所以以后一定看清楚结果要求的到底是什么????!!!!!
541. Reverse String II
/思路,先判断需要几个2*k,解决掉,把剩下不足2*k的部分再分别做判断
说实话不难,但是做了超级长时间因为举例子的时候没有搞清楚清晰的数字变化,以后的草稿纸一定 要清晰明了
需要有空的时候再练习一遍
415. Add Strings-------必须再练习
******如何将s.charAt(i)转化为数字,即如何将‘5’转化为5!!!直接 s.charAt(i)-‘0’ !!!!
i >= 0 || j >= 0 || carry == 1;--------------用三元运算符 做出加法!!
public class Solution { public String addStrings(String num1, String num2) { StringBuilder sb = new StringBuilder(); int carry = 0; for(int i = num1.length() - 1, j = num2.length() - 1; i >= 0 || j >= 0 || carry == 1; i--, j--){ int x = i < 0 ? 0 : num1.charAt(i) - '0'; int y = j < 0 ? 0 : num2.charAt(j) - '0'; sb.append((x + y + carry) % 10); carry = (x + y + carry) / 10; } return sb.reverse().toString(); } }
颜色标记的是第二次4月6日复习出错的点儿
//4.7复习完好做出bravo!
459. Repeated Substring Pattern
//总是想一些莫名其妙的解法,想找到一个有序又不能重复的集合。结果没找到,除非自定义。
【目前为止,好像,只有那个replace那个,需要用到映射,还有不重复的,用到了集合,其余的都是从长度本身入手,下次注意】
设立gap,可以从1开始到length/2结束,也可以反过来
//4.6fail
//4.7fail.
345. Reverse Vowels of a String
思路不错,用两个指针形式从两侧往中间
但是出现了个错误见--字符数组问题,toString和new String(cs)
判断是否为Vowel使用了判断,|| ||了10次,如果多的话,就需要像第一位一样 String vowels="aeiouAEIOU",使用 vowels.contains(chars[i]+"");注意里面是字符串
434. Number of Segments in a String
题目就好几个单词不认识
Count the number of segments in a string, where a segment is defined to be a contiguous sequence【连续序列】 of non-space characters.
Please note that the string does not contain any non-printable characters.
如果只含有空格就好办了,可是还可能有,.啥的,并不能做判断,遇到一个就加一。
//统计的不是空格数,而是 当前字符不是空格,前一个字符是空格或者当前字符就是第一个字符了。
//同时,英文的, .后面都是有一个空格的,所以直接计算是字符打头比较合适
438. Find All Anagrams in a String解析也没太看懂,明天4.8接着来
205. Isomorphic Strings 解析差不多比上一次好多了,明天4.8写吧