目录
1. String、StringBuffer、StringBuilder的区别
1. String、StringBuffer、StringBuilder的区别
(1)String的内容不可修改,StringBuffer与StringBuilder的内容可以修改.。
(2)StringBuffer与StringBuilder的方法大部分相同,但与String有差异。
(3)StringBuffer采用同步处理,属于线程安全操作;而StringBuilder未采用同步处理,属于线程不安全操作。
补充1:
|
方法
|
说明
|
|
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:
2.字符串中的第一个唯一字符
字符串中的第一个唯一字符
https://leetcode.cn/problems/first-unique-character-in-a-string/

方法:辅助数组法
class Solution {
public int firstUniqChar(String s) {
int[] arr=new int[26];
for(int i=0;i<s.length();i++){
arr[s.charAt(i)-97]++;
}
for(int i=0;i<s.length();i++){
if(arr[s.charAt(i)-97]==1){
return i;
}
}
return -1;
}
}
解析:
我们可以对字符串进行两次遍历,第一次遍历时,我们使用辅助数组统计出字符串中每个字符出现的次数。 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.验证回文串
验证回文串
https://leetcode.cn/problems/valid-palindrome/

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<j){
while(i<j&&!isNumOrCharacter(s.charAt(i))){
i++;
}
while(i<j&&!isNumOrCharacter(s.charAt(j))){
j--;
}
if(s.charAt(i)!=s.charAt(j)){
return false;
}
i++;
j--;
}
return true;
}
}
解析:


以上为我个人的小分享,如有问题,欢迎讨论!!!
都看到这了,不如关注一下,给个免费的赞 ![]()

本文介绍了String、StringBuffer和StringBuilder的区别,包括可修改性、线程安全性和常用方法。还探讨了字符串中的第一个唯一字符、最后一个单词的长度和回文串验证的算法。
1万+





