Java随手笔记(力扣牛客常用)----字符串

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言


一、构建字符串 

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;
    }

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值