String
1. 字符串基础知识
1.1 字符串对象的创建
new String()
方法会在堆中创建一个对象,之后会在方法区中的字符串常量池中判断,如果没有值相等的字符串,那么创建一个常量; 如果有,那么直接调用。
1.2 方法
方法名 | 作用 |
---|---|
char charAt(int index) | 返回指定位置的字符 |
int compareTo(String anotherString) | 比较两个字符串。相等返回0;前大后小返回1;前小后大返回-1 |
boolean contains(CharSequence s) | 判断字符串是否包含s |
boolean endsWith(String suffix) | 判断字符串是否以suffix结尾 |
boolean equals(Object anObject) | 判断两个串是否相等 |
boolean equalsIgnoreCase(String anotherString) | 忽略大小写判断两个串是否相等 |
byte[] getBytes() | 将字符串串变成字节数组返回 |
int indexOf(String str) | 返回str在字符串第一次出现的位置 |
boolean isEmpty() | 字符串是否为空 |
int length() | 字符串长度 |
int lastIndexOf(String str) | 返回str最后一次出现的位置 |
String replace(CharSequence target, CharSequence replacement) | 用replacement替换字符串target的字符 |
String[] split(String regex) | 将字符串以regex分割 |
boolean startsWith(String prefix) | 判断字符串是否以prefix开始 |
String substring(int beginIndex) | 从beginIndex开始截取字串 |
String substring(int beginIndex, int endIndex) | 截取beginIndex到endIndex - 1的字符串 |
char[] toCharArray() | 将字符串转换乘char数组 |
String toLowerCase() | 字符串转小写 |
String toUpperCase() | 字符串转大写 |
String trim() | 去除字符串两边空格 |
静态方法 | |
static String valueOf(int i) | 将 i 转换成字符串 |
class Solution {
public int numDifferentIntegers(String word) {
Set
int p1 = 0;
int n = word.length();
int p2;
while (true) {
while (p1 < n && !Character.isDigit(word.charAt(p1))) {
p1++;
}
if (p1 == n) {
break;
}
p2 = p1;
while(p2 < n && Character.isDigit(word.charAt(p1))) {
p2++;
}
while(p2-p1 > 1 && word.charAt(p1) == ‘0’) {
p1++;
}
res.add(word.substring(p1,p2));
p1 = p2;
}
return res.size();
}
}
Class Solution {
public int numDifferentIntegers(String word) {
Set
int n = word.length(), p1 = 0, p2;
while (true) {
while (p1 < n && !Character.isDigit(word.charAt(p1))) {
p1++;
}
if (p1 == n) {
break;
}
p2 = p1;
while (p2 < n && Character.isDigit(word.charAt(p2))) {
p2++;
}
while (p2 - p1 > 1 && word.charAt(p1) == ‘0’) { // 去除前导 0
p1++;
}
set.add(word.substring(p1, p2));
p1 = p2;
}
return set.size();
}