一、翻转字符串里的单词
具体代码如下:
class Solution {
public String reverseWords(String s) {
StringBuilder sb=removeSpace(s);
reverseString(sb,0,sb.length()-1);
reverseEachWord(sb);
return sb.toString();
}
public StringBuilder removeSpace(String s){
int start=0;
int end=s.length()-1;
while(s.charAt(start)==' ') start++;
while(s.charAt(end)==' ') end--;
StringBuilder sb=new StringBuilder();
while(start<=end){
char c=s.charAt(start);
if(c!=' '||sb.charAt(sb.length()-1)!=' '){
sb.append(c);
}
start++;
}
return sb;
}
public void reverseString(StringBuilder sb,int start,int end){
while(start<end){
char temp=sb.charAt(start);
sb.setCharAt(start,sb.charAt(end));
sb.setCharAt(end,temp);
start++;
end--;
}
}
private void reverseEachWord(StringBuilder sb){
int start=0;
int end=1;
int n=sb.length();
while(start<n){
while(end<n && sb.charAt(end)!=' '){
end++;
}
reverseString(sb,start,end-1);
start=end+1;
end=start+1;
}
}
}
二、右旋转字符串
具体代码如下:
import java.util.Scanner;
public class Main{
public static void main (String[] args) {
Scanner in=new Scanner(System.in);
int n=Integer.parseInt(in.nextLine());
String s=in.nextLine();
int len=s.length();
char[] chars=s.toCharArray();
reverseString(chars,0,len-n-1);
reverseString(chars,len-n,len-1);
reverseString(chars,0,len-1);
System.out.println(chars);
}
public static void reverseString(char[] ch,int start,int end){
while (start<end){
ch[start]^=ch[end];
ch[end]^=ch[start];
ch[start]^=ch[end];
start++;
end--;
}
}
三、今日收获
最近事情较多,所以后期博客暂时只记录代码,解题思路待定。
今日学习+解题+记录=1h30min。