算法训练营——字符串算法(第十四课)

字符串算法

主要是的接扫的字符串的相关的算法题目,并掌握好相关的常用函数,以及面对字符串的算法问题的处理的方式。

String的特点:

  • 字符串是常量,一旦被创建就不能改变,这是因为字符串的值是存放在方法区的常量池里面,但是引用可以改变。
  • 字符串字面值"ab"也可以看成是一个字符串对象。

String的基本函数

1.常见String类的获取功能

    public int length(): 获取字符串的长度。
    public char charAt(int index): 获取指定索引位置的字符
    public int indexOf(int ch): 返回指定字符在此字符串中第一次出现处的索引。
    public int indexOf(String str): 返回指定字符串在此字符串中第一次出现处的索引。
    public int indexOf(int ch,int fromIndex):返回指定字符在此字符串中从指定位置后第一次出现处的索引。
    public int indexOf(String str,int fromIndex): 返回指定字符串在此字符串中从指定位置后第一次出现处的索引。
    public String substring(int start): 从指定位置开始截取字符串,默认到末尾。
    public String substring(int start,int end): 从指定位置开始到指定位置结束截取字符串。

2.常见String类的判断功能

    public boolean equals(Object obj): 比较字符串的内容是否相同,区分大小写
    public boolean equalsIgnoreCase(String str): 比较字符串的内容是否相同,忽略大小写
    public boolean contains(String str): 判断字符串中是否包含传递进来的字符串
    public boolean startsWith(String str): 判断字符串是否以传递进来的字符串开头
    public boolean endsWith(String str): 判断字符串是否以传递进来的字符串结尾
    public boolean isEmpty(): 判断字符串的内容是否为空串""。

3.常见String类的转换功能

    public byte[] getBytes(): 把字符串转换为字节数组。
    public char[] toCharArray(): 把字符串转换为字符数组。
    public static String valueOf(char[] chs): 把字符数组转成字符串。
    public static String valueOf(int i): 把int类型的数据转成字符串。(String类的valueOf方法可以把任意类型的数据转成字符串。)
    public String toLowerCase(): 把字符串转成小写。
    public String toUpperCase(): 把字符串转成大写。
    public String concat(String str): 把字符串拼接。

4常见String类的其他常用功能

    public String replace(char old,char new) 将指定字符进行互换
    public String replace(String old,String new) 将指定字符串进行互换
    public String trim() 去除两端空格
    public int compareTo(String str) 会对照ASCII 码表 从第一个字母进行减法运算 返回的就是这个减法的结果,如果前面几个字母一样会根据两个字符串的长度进行减法运算返回的就是这个减法的结果,如果连个字符串一摸一样 返回的就是0
    public int compareToIgnoreCase(String str) 跟上面一样 只是忽略大小写的比较

5 常见String类中int与String的相互转换

num + “”
String.valueOf(num)
Integer.toString(num)
  String转int有两种方式
Integer.parseInt(str)
Integer.valueOf(str).intValue()

6.Java中的charAt()方法

java.lang.String.charAt() 方法返回指定索引处的char值。索引范围是从0到length() - 1。
声明java.lang.String.charAt()方法

    public charcharAt(int index)

字符串实战题目

字符串基础问题

package 计算机程序算法分类.字符串类型;

import org.junit.Test;

/**
 * @Classname 转换小写字母709
 * @Description TODO 采用的双指针的思想来遍历的字符串
 * @Date 2021/6/28 15:03
 * @Created by xjl
 */
public class 转换小写字母709 {
    public String toLowerCase(String s) {
        return s.toLowerCase();
    }

    @Test
    public void test() {
        String hello = toLowerCase3("PiTAs");
        System.out.println(hello);
    }

    public String toLowerCase2(String str) {
        char[] array = str.toCharArray();
        for (int i = 0; i < array.length; i++) {
            if (array[i] >= 'A' && array[i] <= 'Z') {
                array[i] += 32;
            }
        }
        return new String(array);
    }

    public String toLowerCase3(String str) {
        char[] array = str.toCharArray();
        int start=0;
        int end=array.length-1;

        while (start<=end){
            if (array[start] >= 'A' && array[start] <= 'Z') {
                array[start] += 32;
            }
            if (array[end] >= 'A' && array[end] <= 'Z') {
                array[end] += 32;
            }
            start++;
            end--;
        }
        return new String(array);
    }
}
class Solution {
    public int lengthOfLastWord(String s) {
        if (s.split(" ").length==0){
            return 0;
        }
        return s.split(" ")[s.split(" ").length - 1].length();
    }
}


class Solution {
    public int lengthOfLastWord(String s) {
 if (s == null || s.length() == 0) {
            return 0;
        }
        int count = 0;
        for (int i = s.length()-1; i >=0; i--) {
            if (s.charAt(i) != ' ') {
                count += 1;
            } else {
                if (count > 0) {
                    break;
                }
            }
        }
        return count;
    }
}


字符串操作问题

异位词问题

回文串问题

最长子串、子序列问题

字符串 +DP 问题

课后作业

参考链接

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

庄小焱

我将坚持分享更多知识

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值