字符串原本以为不会花多少时间的结果花了3个多小时主要是老是不细心出bug。今天博客就敷衍点算了。
● 344.反转字符串
class Solution {
public void reverseString(char[] s) {
char a;
for(int i=0,j=s.length-1;j>i;i++,j--){
a=s[i];
s[i]=s[j];
s[j]=a;
}
}
}
● 541. 反转字符串II
class Solution {
public String reverseStr(String s, int k) {
char[] x=s.toCharArray();
int rall=0;
int a=k;
while(rall<=x.length/(2*k)){
if(x.length-2*k*rall<k)
a=x.length-2*k*rall;
for(int i=2*k*rall,j=i+a-1;j>i;i++,j--){
char b=x[i];
x[i]=x[j];
x[j]=b;
}
rall++;
}
s=new String(x);
return s;
}
}
● 剑指Offer 05.替换空格
class Solution {
public String replaceSpace(String s) {
char[] n=s.toCharArray();
s="";
for(int i=0;i<n.length;i++)
if(n[i]==' ')
s=s+"%20";
else
s=s+n[i];
return s;
}
}
● 151.翻转字符串里的单词
class Solution {
public String reverseWords(String s) {
int a=0;
int i=s.length()-1,j=s.length();
StringBuilder str = new StringBuilder();
for(;i>=0;i--){
if(s.charAt(i)==' '||i==0){
if(s.charAt(i)!=' ')
str.append(s.substring(i, j));
else
str.append(s.substring(i+1, j)+" ");
while(i>0&&s.charAt(i-1)==' ')
i--;
j=i;
}
}
if(str.charAt(0)==' ')
str.deleteCharAt(0);
if(str.charAt(str.length()-1)==' ')
str.deleteCharAt(str.length()-1);
return str.toString();
}
}
● 剑指Offer58-II.左旋转字符串
class Solution {
public String reverseLeftWords(String s, int n) {
int len=s.length();
StringBuilder sb=new StringBuilder(s);
reverseString(sb,0,n-1);
reverseString(sb,n,len-1);
return sb.reverse().toString();
}
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--;
}
}
}
这道题一看也太简单了,但是主要是为了训练思维,但是我还是喜欢简单的做法。
class Solution {
public String reverseLeftWords(String s, int n) {
return s.substring(n, s.length())+s.substring(0, n);
}
}
记录
第8天完成累死我了。但是还是要加油!!!