字符串大写字母转化 移动数组 二分查找并写入


1.该函数接收一个字符串参数 str ,并将该字符串中的大写字母转换成小写字母,

class Solution {
    
    
    public String toLowerCase(String str) {
    
    
        char[] string=str.toCharArray();//先转成字符数组
        String stri="";//新建一个新的字符串,用于返回
        for(int i=0;i<str.length();i++){
    
    
            if(string[i]<='Z'&& string[i]>='A'){
    
    
                string[i]+=32;
            }
            stri+=string[i];
        }
        return stri;
    }
}

2.给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数

class Solution {
    
    
    public void rotate(int[] nums, int k) {
    
    
    //变成二倍,然后就在里面截取
        int k1=k%nums.length;
        int[] arr=new int[nums.length*2];
        for(int i=0;i<nums.length;++i){
    
    
            arr[i]=arr[i+nums.length]=nums[i];
        }
        //System.out.println(Arrays.toString(arr));
        for(int j=0;j<nums.length;j++){
    
    
            nums[nums.length-1-j]=arr[arr.length-1-k1-j];
        }
    }
}

3.给定一个数组 nums 和一个值 val ,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。

class Solution {
    
    
    public int removeElement(int[] nums, int val) {
    
    
        //将val相等的移到后面,然后返回不是val的数字的数量
        int lift=0;
        int right=nums.length-1;
        while(lift<right){
    
    
            while(lift<right && nums[lift]!=val){
    
    
                lift++;
            }
            while(lift<right && nums[right]==val){
    
    
                right--;
            }
            int temp=nums[lift];
            nums[lift]=nums[right];
            nums[right]=temp;
        }
                if(lift==right && nums[lift]!=val)
            lift++;
        return lift;
    }
}

4.给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。(不在返回要写入的位置)

class Solution {
    
    
    public int searchInsert(int[] nums, int target) {
    
    
    //二分查找的原理,由于要返回写入的位置,改了一些小地方
        int lift=0;
        int right=nums.length-1;
        int mid=0;
        if(nums[right]<target){
    
    
            return right+1;
        }
        if(nums[lift]>=target){
    
    
            return lift;
        }
        while(lift<right){
    
    
            mid=(lift+right)/2;
            if(nums[mid]==target){
    
    
                return mid;
            }
            if(nums[mid]>target){
    
    
                right=mid;
            }
            if(nums[mid]<target){
    
    
                lift=mid+1;
            }
        }
        return lift;
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_45070922/article/details/112794530