今天是算法训练营第九天,事情比较多,两个题目都用的比较懒的方法,先打个卡吧。
151.反转字符串中的单词
我用的substring()方法加上StringBuilder的append(),空间复杂度应该也算是O(1)吧,毕竟只有一个sb对象,两次substring的string对象,再加最后输出的toString()对象,不太确定...
package string;
public class ReverseWordsDemo {
public static void main(String[] args) {
System.out.println(reverseString("a good example"));
}
public static String reverseString(String s) {
StringBuilder sb = new StringBuilder();
String[] arr = s.trim().split(" ");
for(int i = arr.length - 1; i >= 0; i--) {
if(!arr[i].trim().equals("")) {
sb.append(arr[i].trim() + " ");
}
}
return sb.toString().trim();
}
}
卡码55.右旋字符串
还是substring()神器,咔咔一顿操作。。
package string;
public class RightScaleDemo {
public static void main(String[] args) {
System.out.println(rightReverse("abc", 3));
}
public static String rightReverse(String s, int k) {
if(k > s.length() || k < 0) {
return "";
}
if(k == s.length()) {
return s;
}
//s="abc"
StringBuilder sb = new StringBuilder();
sb.append(s.substring(s.length() - k));
sb.append(s, 0, Math.min(k + 1, s.length()));
return sb.toString();
}
}