/*
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
示例 1:
输入:strs = ["flower","flow","flight"]
输出:"fl"
示例 2:
输入:strs = ["dog","racecar","car"]
输出:""
解释:输入不存在公共前缀
*/
/*indexOf() 是 Java 中 String 类的一个方法,用于在字符串中搜索指定字符或
子字符串首次出现的位置。如果找到该字符或子字符串,它返回第一次出现的索引
(位置),从 0 开始计数。如果未找到,则返回 -1。
*/
public class Solution {
public static String longestCommonPrefix(String[] strs) {
if (strs == null || strs.length == 0) {
return "";
}
// 假设第一个字符串是公共前缀的初始值
String prefix = strs[0];
// 遍历剩余的字符串
for (int i = 1; i < strs.length; i++) {
// 逐个字符比较当前字符串与公共前缀
while (strs[i].indexOf(prefix) != 0) {
// 如果公共前缀不是当前字符串的前缀,则移除公共前缀的最后一个字符
prefix = prefix.substring(0, prefix.length() - 1);
// 如果公共前缀为空,则所有字符串没有公共前缀
if (prefix.isEmpty()) {
return "";
}
}
}
// 返回最终的公共前缀
return prefix;
}
}
//不使用indexOf()的另一种解法
class Solution {
public String longestCommonPrefix(String[] strs) {
String ret="";
if(strs.length == 0)return ret;
if(strs.length ==1)return strs[0];
ret = strs[0];
for(int i =1;i<strs.length;i++){
while(!strs[i].startsWith(ret)){
ret =ret.substring(0,ret.length()-1);
if(ret.length()==0){
return "";
}
}
}
return ret;
}
}
字符串常用函数
length()返回字符串的长度,即字符串中字符的数量。
String str = "Hello"
int length = str.length();//返回5
split()
replace()
trim()
toLowerCase()
toUpperCase()
charAt(int index)返回指定索引处的 char 值。索引范围从 0 到 length() - 1。
String str = "Hello";
char firstChar = str.charAt(0); // 返回 'H'
substring(int beginIndex)返回一个新字符串,从beginIndex到结尾
substring(int beginIndex,int endIndex)返回一个新字符串,从beIndex到endIndex
String str = "Hello,World!";
String newStr = str.substring(0,5);//返回Hello
indexOf(int ch) 和 indexOf(String str)
indexOf()
方法返回指定字符或子字符串首次出现的索引,如果未找到则返回 -1
。
String str = "Hello, World!";
int index1 = str.indexOf('o'); // 返回 4
int index2 = str.indexOf("World"); // 返回 7
lastIndexOf(int ch) 和 lastIndexOf(String str)
lastIndexOf()
方法返回指定字符或子字符串最后一次出现的索引,如果未找到则返回 -1
。
String str = "Hello, World! World!";
int i = str.lastIndexOf("l");//返回3
int index = str.lastIndexOf("World"); // 返回 13
split(String regex)
split()
方法根据给定的正则表达式将字符串拆分为子字符串数组。
String str = "apple,banana,orange";
String[] fruits = str.split(","); // 返回 ["apple", "banana", "orange"]
replace(char oldChar, char newChar) 和 replace(CharSequence target, CharSequence replacement)
replace()
方法返回一个新的字符串,其中所有出现的指定字符或子字符串都被替换为另一个字符或子字符串。
String str = "Hello, World!";
String replaced1 = str.replace('o', '0'); // 返回 "Hell0, W0rld!"
String replaced2 = str.replace("World", "Java"); // 返回 "Hello, Java!"
trim()
trim()
方法返回一个新的字符串,它是此字符串的一个副本,删除了前导和尾随的空白。
String str = " Hello, World! ";
String trimmed = str.trim(); // 返回 "Hello, World!"
toLowerCase()
toLowerCase()
方法返回字符串的小写形式
String str = "Hello, World!";
String lower = str.toLowerCase(); // 返回 "hello, world!"
toUpperCase()
toUpperCase()
方法返回字符串的大写形式。
String str = "Hello, World!";
String upper = str.toUpperCase(); // 返回 "HELLO, WORLD!"