String
basic operation
equal
== 比较的是reference obj
.equals() 比较的才是真正的val
indexOf/lastIndexOf 如果传入参数是string,返回的仍然是第一个char的位置
\n\t在计算string长度的时候都当做一个字符,因为他们都是转义字符
Sort
char[] chars = str.toCharArray();
Arrays.sort(chars);
String sorted = new String(chars); // or String.valueOf(chars)
string1 compare with string2
s1.compareTo(s2)
Split
- 分割String的时候,需要考虑分隔符是否唯一
- corner case " a b",这种情况下,split会分割每个空格,把
""存入到分隔后的数组里
- corner case " a b",这种情况下,split会分割每个空格,把
- 而对于分割String的问题,可以考虑引入start,end坐标,以进行从头到尾的搜索
Reverse
- 头尾两个指针不断进行交换,并向中间靠近
char[] arr = s.toCharArray();
for (int i = 0; i < s.length() / 2; i++) {
char tmp = arr[i];
arr[i] = arr[s.length() - 1 - i];
arr[s.length() - 1 - i] = tmp;
}
return new String(arr);
处理String中第i个字符的替换问题
char[] array = str.toCharArray();
array[i] = 'x';
String newStr = String.valueOf(array);
Char to any other type
Char to String
String str = "" + charA + charB; //""必须在最前,否则变成char的ASCII code相加
Char to Integer
char c = '9'
int val = c - '0' // 9
int val = Character.getNumericValue(c)
Add changed String/char array to the result set
new String(charArray)
String.copyValueOf(charArray)
StringBuilder
- 移除最后i个字符
sb.setLength(sb.length() - i)
使用场景
- 当需要进行不规律的String拼接的时候
Zigzag Conversion
关键在于理解可以根据每一行,分别处理完整一列向下,和zigzag的情况