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会分割每个空格,把""存入到分隔后的数组里
  • 而对于分割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的情况

results matching ""

    No results matching ""