提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
一、构建字符串
StringBuilder s=new StringBulider();
s.append(ch);
s.toString();
二、字符串的方法
1、返回指定位置的代码单元:s.charAt(i);
2、检查字符串是否相等:s.equals(t);
检查字符串是否相等而不区分大小写:s.equalslgnoreCase(t);
3、提取字符串的子串:s.substring(0,3);
4、大小写字母转换:s.toUpperCase();
s.toLowerCase();
5、将整数转换为字符串:s=Integer.toString(x);
6、反转字符串:s.reverse();
7、按照字典顺序,如果字符串位于other之前,返回一个负数;如果位于other之后,返回一个正数;如果字符串相等,返回0:s.compareTo(other);
8、如果字符串以prefix开头或以suffix结尾,返回true:s.startsWith(prefix);
s.endsWith(suffix);
9、返回一个字符串,将当前字符串重复count次:s.repeat(count);
10、将字符串转换为字符数组:char[] ch=s.toCharArray();
将字符数组转换为字符串:s=new String(ch);
11、删除字符串的头尾空白符:s.trim();
12、求字符串的长度:s.length()
13、返回第一次出现的指定子字符串在此字符串中的索引:a=s.indexOf(str);
14、删除字符串第一个字符:s.erase(0,1);
删除字符串最后一个字符:s.erase(len-1,1);
15、是否包含子串:s.contains(str);
三、split方法
其功能可简单描述为在给定正则表达式的匹配位置拆分该字符串。
语法
public String[] split(String regex, int limit)
参数
-
regex -- 正则表达式分隔符。
-
limit -- 分割的份数(可以不填)。
public class Test {
public static void main(String args[]) {
String str = new String("Welcome-to-Runoob");
System.out.println("- 分隔符返回值 :" );
for (String retval: str.split("-")){
System.out.println(retval);
}
System.out.println("");
System.out.println("- 分隔符设置分割份数返回值 :" );
for (String retval: str.split("-", 2)){
System.out.println(retval);
}
System.out.println("");
String str2 = new String("www.runoob.com");
System.out.println("转义字符返回值 :" );
for (String retval: str2.split("\\.", 3)){
System.out.println(retval);
}
System.out.println("");
String str3 = new String("acount=? and uu =? or n=?");
System.out.println("多个分隔符返回值 :" );
for (String retval: str3.split("and|or")){
System.out.println(retval);
}
}
}
以上程序执行结果为:
- 分隔符返回值 : Welcome to Runoob - 分隔符设置分割份数返回值 : Welcome to-Runoob 转义字符返回值 : www runoob com 多个分隔符返回值 : acount=? uu =? n=?
四、KMP算法
KMP的主要思想是当出现字符串不匹配时,可以知道一部分之前已经匹配的文本内容,可以利用这些信息避免从头再去做匹配了。
获取next数组,next数组也就是前缀表:
private void getNext(int[] next, String s) {
int j = 0;
next[0] = 0;
for (int i = 1; i < s.length(); i++) {
while (j > 0 && s.charAt(j) != s.charAt(i))
j = next[j - 1];
if (s.charAt(j) == s.charAt(i))
j++;
next[i] = j;
}
}
给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。
示例 1: 输入: haystack = "hello", needle = "ll" 输出: 2
示例 2: 输入: haystack = "aaaaa", needle = "bba" 输出: -1
public int strStr(String haystack, String needle) {
if (needle.length() == 0) return 0;
int[] next = new int[needle.length()];
getNext(next, needle);
int j = 0;
for (int i = 0; i < haystack.length(); i++) {
while (j > 0 && needle.charAt(j) != haystack.charAt(i))
j = next[j - 1];
if (needle.charAt(j) == haystack.charAt(i))
j++;
if (j == needle.length())
return i - needle.length() + 1;
}
return -1;
}