LeetCode 字符串基础

139 阅读2分钟

LeetCode 字符串基础

题目描述

给定一个字符串 s,由若干单词组成,每个单词之间用空格隔开。返回最后一个单词的长度。 如果不存在最后一个单词,请返回 0。

示例:

输入: "Hello World" 输出: 5

知识点

  1. 字符串的split方法

split方法可以将一个字符串切割成多个子字符串,其基本用法为:

public String[] split(String regex)

其中,regex为要使用的定界符。

例如:

String s = "Hello World";
String[] arr = s.split(" ");
System.out.println(Arrays.toString(arr));

输出内容为:["Hello", "World"]

  1. 数组的取值及长度获取

对于一个已经初始化的数组,可以使用以下形式获取其某个位置的值:

arr[index]

其中,index应该是一个整数,表示数组的索引。

数组的长度可以使用以下方法获取:

arr.length

例如:

String[] arr = {"Hello", "World"};
System.out.println(arr[0]); // 输出Hello
System.out.println(arr.length); // 输出2
  1. 字符串读取的一些方法

对于一个字符串,可以使用以下方法获取其对应位置的字符:

s.charAt(index)

其中,index应该是一个整数,表示字符串的索引。

如果需要获取字符串的最后一个字符,我们可以使用:

s.charAt(s.length() - 1)
String s = "Hello";
System.out.println(s.charAt(0)); // 输出H
System.out.println(s.charAt(s.length() - 1)); // 输出o

实现代码

public int lengthOfLastWord(String s) {
    String[] arr = s.split(" ");
    if (arr.length == 0) {
        return 0;
    }
    String lastWord = arr[arr.length - 1];
    return lastWord.length();
}

完整代码实例:

public class Solution {
    public int lengthOfLastWord(String s) {
        String[] arr = s.split(" ");
        if (arr.length == 0) {
            return 0;
        }
        String lastWord = arr[arr.length - 1];
        return lastWord.length();
    }
}

综合应用

可以将该题与其他字符串操作相关的题目结合起来进行综合练习,例如:

  1. 翻转字符串中的单词

给定一个字符串,逐个翻转字符串中的每个单词。

示例:

输入: "the sky is blue" 输出: "blue is sky the"

实现代码:

public String reverseWords(String s) {
    String[] arr = s.split(" ");
    StringBuilder sb = new StringBuilder();
    for (int i = arr.length - 1; i >= 0; i--) {
        if (!arr[i].equals("")) {
            sb.append(arr[i]).append(" ");
        }
    }
    return sb.toString().trim();
}
  1. 最长公共前缀

编写一个函数来查找字符串数组中的最长公共前缀。

如果不存在公共前缀,返回空字符串 ""。

示例:

输入: ["flower","flow","flight"] 输出: "fl"

实现代码:

public String longestCommonPrefix(String[] strs) {
    if (strs == null || strs.length == 0) {
        return "";
    }
    for (int i = 0; i < strs[0].length(); i++) {
        char c = strs[0].charAt(i);
        for (int j = 1; j < strs.length; j++) {
            if (i == strs[j].length() || strs[j].charAt(i) != c) {
                return strs[0].substring(0, i);
            }
        }
    }
    return strs[0];
}

这些题目的解法都需要用到字符串的一些基本操作,因此在学习完本题后,可以结合其他相关的题目进行更深入的练习。同时,也可以进一步了解字符串在Java中的使用方法和一些常见的操作技巧,例如使用正则表达式进行字符串处理等等