剑指 Offer 05. 替换空格
class Solution {
public String replaceSpace(String s) {
StringBuilder res=new StringBuilder();
for(int i=0;i<s.length();i++){
if(s.charAt(i)==' '){
res.append("%20");
}else{
res.append(s.charAt(i));
}
}
return res.toString();
}
}
剑指 Offer 58 - II. 左旋转字符串
方法一:
class Solution {
public String reverseLeftWords(String s, int n) {
StringBuilder res=new StringBuilder();
res.append(s.substring(n,s.length()));
res.append(s.substring(0,n));
return res.toString();
}
}
方法二:规定 Java 只能用 String
class Solution {
public String reverseLeftWords(String s, int n) {
String res="";
for(int i=n;i<s.length();i++){
res+=s.charAt(i);
}
for(int i=0;i<n;i++){
res+=s.charAt(i);
}
return res;
}
}
代码简化,利用取余运算简化代码
class Solution {
public String reverseLeftWords(String s, int n) {
String res="";
for(int i=n;i<s.length()+n;i++){
res+=s.charAt(i%s.length());
}
return res;
}
}
剑指 Offer 53 - II. 0~n-1中缺失的数字
方法一:
class Solution {
public int missingNumber(int[] nums) {
int count=0;
for(int i=0;i<nums.length;i++){
if(nums[i]==count){
count++;
}else{
break;
}
}
return count;
}
}
方法二: 二分搜索法
class Solution {
public int missingNumber(int[] nums) {
//有序数组的查找问题要想到二分查找
//分为两个部分,左子数组nums[i]=i,右左子数组nusm[i]!=i,
//我们利用二分要找的是第一个实际数组和下标索引不匹配的位置
int l=0;
int r=nums.length-1;
while(l<=r){
int mid=(l+r)/2;
// 0 2 3 4 5 6 7 8 9
// 0 1 2 3 4 5 6 7 8
// 0 1 2 3 4 5 6 7 9
// 0 1 2 3 4 5 6 7 8
if(nums[mid]==mid){
l=mid+1;
}else{
r=mid-1;
}
}
return l;
}
}