一、LeetCode-3、无重复字符的最长子串
- 解题思路:这里利用容器的contains方法,来方便的判断是否已经存在字符,将字符串的每个字符拿出来添加,看容器中是否存在该字符,这里需要注意的是,要删除的是该字符之前的所有字符,而不是直接将容器清空!!。
public int lengthOfLongestSubstring(String s) {
int result = 0;
List ls = new ArrayList<String>();
for (int i = 0; i < s.length(); i++) {
String str=new String(new char[] {s.charAt(i)});
if (ls.contains(str)) {
if (result<ls.size()) {
result=ls.size();
}
int len=ls.indexOf(str);
for (int j = 0; j <= len; j++) {
ls.remove(0);
}
ls.add(str);
}else {
ls.add(str);
}
}
return result>ls.size()?result:ls.size();
}
二、LeetCode-14、最长公共前缀
- 解题思路:首先取出来第一个字符串,利用while循环遍历,直到循环体中的字符串以str开头。
- 注意:这里的while循环使用的太巧妙了!!
public String longestCommonPrefix(String[] strs) {
if(strs.length == 0){
return "";
}
String str = strs[0];
for(int i = 1; i < strs.length; i++){
while(strs[i].indexOf(str) != 0){
str=str.substring(0, str.length() - 1);
}
}
return str;
}
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-common-prefix/comments/