151.翻转字符串里的单词
题目链接 | 文档讲解 |视频讲解 : 链接
1.思路:
1.去除字符串头尾的空格 ,使用库函数 trim()
2.对字符串进行分割,使用库函数split()
3.创建StringBuilder sb,遍历集合,中间是空格不处理,非空格sb拼接单词后,添加空格,最后一次遍历不需要添加空格
4.返回字符串
2.代码:
public static String reverseWords(String s) {
//去除字符串开头和结尾的空格
String s2 = s.trim();
//进行字符串分割
String[] s1 = s2.split(" ");
StringBuilder sb= new StringBuilder();
for (int i = s1.length - 1; i >= 0; i--) {
//中间是空格的不做处理
if(s1[i].equals("")){
continue;
}
//非空格元素追加
sb.append(s1[i]);
//中间单词之间需要空格,最后一个元素后面不需要加空格,只有
if (i != 0) {
sb.append(" ");
}
}
return sb.toString();
}
还有一种老师的思路还没有缕清楚,周末补充~~
卡码网:55.右旋转字符串
题目链接 | 文档讲解 |视频讲解:链接
1.思路:
1.先将整个字符串反转
2.反转前k个字符
3.反转k后面的字符串
2.代码:
public static String rightReverseWords(String s,int k) {
char[] charArray = s.toCharArray();
//1反转整个字符串 双指针
reverse(charArray,0,s.length()-1);
//2.反转前半段
reverse(charArray,0,k-1);
//3.反转后半段
reverse(charArray,k,s.length()-1);
return new String(charArray);
}
public static void reverse(char [] a,int left,int right){
while (left<right){
char temp=a[left];
a[left]=a[right];
a[right]=temp;
left++;
right--;
}
}
1.思路:
使用现有的方法,字符串中substring方法,区间范围是左闭右开
2.代码:
public static String rightReverseWords2(String s,int k) {
//subString 左闭右开
String start = s.substring(s.length() -k, s.length() );
System.out.println(start);
String end = s.substring(0,s.length() -k );
System.out.println(end);
return start+end;
}