String和StringBuilder和StringBuffer的必练好题

目录

1. String、StringBuffer、StringBuilder的区别

2.字符串中的第一个唯一字符

 方法:辅助数组法

 3.字符串最后一个单词的长度

方法1:使用split

方法2:使用lastIndexOf,substring

4.验证回文串


1. StringStringBufferStringBuilder的区别

(1)String的内容不可修改,StringBufferStringBuilder的内容可以修改.。

(2)StringBufferStringBuilder的方法大部分相同,但与String有差异。

(3)StringBuffer采用同步处理,属于线程安全操作;而StringBuilder未采用同步处理,属于线程不安全操作。

补充1:

StringBuilder StringBuffer 类,这两个类大部分功能是相同的,这里介绍 常用的一些方法
方法
说明
StringBuff append(String str)
在尾部追加,相当于 String += ,可以追加: boolean char char[] 、 double、 flfloat int long Object String StringBuffff 的变量
char charAt(int index)
获取 index 位置的字符
int length()
获取字符串的长度
int capacity()
获取底层保存字符串空间总的大小
void ensureCapacity(int
mininmumCapacity)
扩容
void setCharAt(int index, char ch)
index 位置的字符设置为 ch
int indexOf(String str)
返回 str 第一次出现的位置
int indexOf(String str, int
fromIndex)
fromIndex 位置开始查找 str 第一次出现的位置
int lastIndexOf(String str)
返回最后一次出现 str 的位置
int lastIndexOf(String str, int fromIndex)
fromIndex 位置开始找 str 最后一次出现的位置
StringBuff insert(int
offset, String str)
offset 位置插入:八种基类类型 & String 类型 & Object 类型数据
StringBuffer
deleteCharAt(int index)
删除 index 位置字符
StringBuffer delete(int
start, int end)
删除 [start, end) 区间内的字符
StringBuffer replace(int
start, int end, String str)
[start, end) 位置的字符替换为 str
String substring(int start)
start 开始一直到末尾的字符以 String 的方式返回
String substring(int
start int end)
[start, end) 范围内的字符以 String 的方式返回
StringBuffer reverse()
反转字符串
String toString()
将所有字符按照 String 的方式返回

补充2:

尽量避免直接对 String 类型对象进行修改,因为 String 类是不能修改的,所有的修改都会创建新对象,效率 非常低下。

2.字符串中的第一个唯一字符

字符串中的第一个唯一字符icon-default.png?t=N7T8https://leetcode.cn/problems/first-unique-character-in-a-string/

 String和StringBuilder和StringBuffer的必练好题_第1张图片

 方法:辅助数组法

class Solution {
    public int firstUniqChar(String s) {
     int[] arr=new int[26];
     for(int i=0;i

解析:

我们可以对字符串进行两次遍历,第一次遍历时,我们使用辅助数组统计出字符串中每个字符出现的次数。 arr[s.charAt(i)-97]++;

在第二次遍历时,我们只要遍历到了出现一次的字符,那么就返回它的索引

if(arr[s.charAt(i)-97]==1){
             return i;
   }

否则在遍历结束后返回 −1


 3.字符串最后一个单词的长度

问题非常简单,只要用好String的库函数中的方法即可。

方法1:使用split

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String s= in.nextLine();
        String[] arr=s.split(" ");
        System.out.println(arr[arr.length-1].length());
    }
}

方法2:使用lastIndexOf,substring

public class Main {
   public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String s=in.nextLine();
        int x=s.lastIndexOf(" ");
        System.out.println(s.substring(x+1).length());
    }
}

4.验证回文串

验证回文串icon-default.png?t=N7T8https://leetcode.cn/problems/valid-palindrome/

String和StringBuilder和StringBuffer的必练好题_第2张图片 String和StringBuilder和StringBuffer的必练好题_第3张图片

class Solution {
     public static boolean isNumOrCharacter(char ch) {
        if (ch >= '0' && ch <= '9' || ch >= 'a' && ch <= 'z') {
            return true;
        }
        return false;
    }

    public static boolean isPalindrome(String s) {
        s = s.toLowerCase();
         int i=0,j=s.length()-1;
         while(i

 解析:

String和StringBuilder和StringBuffer的必练好题_第4张图片

String和StringBuilder和StringBuffer的必练好题_第5张图片


以上为我个人的小分享,如有问题,欢迎讨论!!! 

都看到这了,不如关注一下,给个免费的赞 

 

你可能感兴趣的:(java,经验分享,其他,算法,数据结构)