算法汇总
以下是所有算法汇总,包括GitHub源码地址链接:力扣算法练习汇总(持续更新…)
题目
关键点
1、
2、
代码
1.split方法
思路
1、倒序
2、如果遇到"“空字符串则跳过
3、最终返回结果需要调用trim()将字符串尾部可能存在的空格去掉。考虑到场景” hello world ",倒序的时候hello后面会多一个空格
。
测试split:
// 三个空格
String s = " ";
String[] strings = s.split(" ");
// 结果是0
System.out.println(strings.length);
// 前后各自一个空格
String s = " h ";
String[] strings = s.split(" ");
// 结果是["","h"]
System.out.println(strings.length);
// 前面有一个空格
String s = " h";
String[] strings = s.split(" ");
// 结果是["","h"]
System.out.println(strings.length);
// 前面有两个空格
String s = " h";
String[] strings = s.split(" ");
// 结果是["","","h"]
System.out.println(strings.length);
// 后面有一个空格
String s = "h ";
String[] strings = s.split(" ");
// 结果是["h"]
System.out.println(strings.length);
// 后面有两个空格
String s = "h ";
String[] strings = s.split(" ");
// 结果是["h"]
System.out.println(strings.length);
代码
class Solution {
public String reverseWords(String s) {
// 可以用split
String[] strings = s.split(" ");
String str = "";
for(int i = strings.length - 1; i >= 0; i--){
if(strings[i].equals("")){
// 如果是空字符串则跳过
continue;
}else if(i == 0){
str = str + strings[i];
}else {
str = str + strings[i] + " ";
}
}
return str.trim();
}
}
时间和空间复杂度
2.解题方法,如暴力法
思路
代码