最长公共前缀
描述 :
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""
。
题目 :
LeetCode 14.最长公共前缀 :
分析 :
第一种方式,我们可以竖着比较,如图所示,每前进一个位置就比较各个串,看是不是都是相等的,只要在某一轮遇到一个不相等的,那么就结束。
解析 :
class Solution {
public String longestCommonPrefix(String[] strs) {
int length = strs[0].length();
int size = strs.length;
for(int i = 0;i < length;i++){
char c = strs[0].charAt(i);
for(int j = 1;j < size;j++){
if(strs[j].length() == i || strs[j].charAt(i) != c){
return strs[0].substring(0,i);
}
}
}
return strs[0];
}
}
压缩字符串
描述 :
给你一个字符数组 chars
,请使用下述算法压缩:
从一个空字符串 s
开始。对于 chars
中的每组 连续重复字符 :
- 如果这一组长度为
1
,则将字符追加到s
中。 - 否则,需要向
s
追加字符,后跟这一组的长度。
压缩后得到的字符串 s
不应该直接返回 ,需要转储到字符数组 chars
中。需要注意的是,如果组长度为 10
或 10
以上,则在 chars
数组中会被拆分为多个字符。
请在 修改完输入数组后 ,返回该数组的新长度。
题目 :
LeetCode 443.压缩字符串 :
443. 压缩字符串 - 力扣(LeetCode)
分析 :
为了让大家更好的理解 , 下面有个视频 :
B站 :LeetCode力扣 443. 压缩字符串 String Compression_哔哩哔哩_bilibili
解析 :
class Solution {
public int compress(char[] chars) {
int cur = 0;
int index = 0;
while(index < chars.length){
char c = chars[index];
int count = 0;
while(index < chars.length && chars[index] == c){
index++;
count++;
}
chars[cur++] = c;
if(count != 1){
for(char arr : String.valueOf(count).toCharArray()){
chars[cur++] = arr;
}
}
}
return cur;
}
}
这期就到这里 , 下期见!