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 set = new HashSet();
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 set = new HashSet();
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();
}