String
Tips:
- StringBuilder 效率更高,新建一个String用StringBuilder更好。
- Should always consider "" in a string. You should think: if the string is "", we will not reach charAt(0).
Edge Case:
- null,
- ""
- integer length
- int digit = str.charAt(i) - '0';
Compare:
Use **str1.equals(str2);**
s.isEmpty()
remove whitespace leading and trailing
str = str.trim();
StringBuilder
- reverse();
- append(sth);
- insert(int position, sth);
- toString();
- str = new StringBuilder(); //clear a string builder
Basic of stack:
construct new stack:
Stack st = new Stack();
Stack<Character> strs = new Stack<Character>();
Class Stack< E>
push(); // push items on the top of the stack
//you must push something here!, not just stack.push();
pop(); // remove the object at the top of the stack
empty(); // check if the stack is empty
peek(); // looks at the top of the stack without removing it
Character
ASCII: [A-Z]:65-90, [a-z]:97-122
Character.isLetterOrDigit() Character.isLetter()
从上一个字符串中遍历处理信息存到下一个字符串问题
- 如果edge case 只有开头一个,可以通过正确设置初始条件和循环进入条件解决吗?即让初始条件为开头的信息,不让初始条件的传递函数进入循环。
- 两个字符串问题在脑中形成两个可以加筹码的串,从而看什么时候拿掉所有的筹码,什么时候应该把一个串的值付给另一个;count 可以看成一个具有reset功能的计数器,每次达到临界点(!=or末尾)就要清到1.
- 相邻两个char作比较向前比较比较好,但是要注意不能让length=1的string进入到loop中。
- 对每个串的功能要有清醒的认识:比如说此题(38),str就是要从空一点点加,所以在循环开始就应将其设为空。而last是为了储存上一轮str的字符串,因此要在str清空之前将值赋给last。此时要看last的初始值是否被设定。
String 长度问题
- String的长度问题全部转化成index或第n个来考虑再相加减,此时长度就变成了str1.length() - str2.length();不过也要具体问题具体分析,题目是求index还是第几个呢?分别考虑。
String 两边字符串遍历
- continue相当于说,必须满足我才能进行循环的其他项,否则就连续先保证满足我。