Java初阶刷题

返校前最后一更啦~ 

目录

1.删除数组中的重复项

2.截断句子

3.移除元素


1.删除数组中的重复项

26. 删除有序数组中的重复项 题解 - 力扣(LeetCode) (leetcode-cn.com)icon-default.png?t=M1H3https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/solution/

题目要求及示例:

解题思路:(双指针思路)

①设置两个变量i,j;且保证j=i+1;

②保证i,j在数组有效长度中运行,当nums[i]==nums[j]时,j++;当nums[i]!=nums[j]时,i++,且同时让nums[i]=nums[j];

③最后返回i+1;

图示如下:

代码如下:

class Solution {
    public int removeDuplicates(int[] nums) {
if(nums.length==0||nums.length==1){
    return nums.length;
}
int i=0;
int j=i+1;
while(j<nums.length){
    if(nums[i]==nums[j]){
    j++;}
else if(nums[i]!=nums[j]){
i++;
    nums[i]=nums[j];
}
}return i+1;
    }
    }

2.截断句子

1816. 截断句子 - 力扣(LeetCode) (leetcode-cn.com)icon-default.png?t=M1H3https://leetcode-cn.com/problems/truncate-sentence/ 

题目要求及示例:

 解题思路:

①将字符串通过toCharArray()方法转换成数组

②通过遇到空格来判断个数,遇见一个减去一个

③使用StringBuilder的append方法进行拼接,当k减至0时,跳出循环(StringBuffer也可,只是更多用于多线程)

④用toString()方法返回至字符串

代码如下:

class Solution {
    public String truncateSentence(String s, int k) {
        StringBuilder sb = new StringBuilder();
        for (char a : s.toCharArray()) {
            if (a == ' ' && --k == 0) break; 

            sb.append(a);
        }
        return sb.toString();
    }
}

3.移除元素

Loading Question... - 力扣(LeetCode) (leetcode-cn.com)icon-default.png?t=M1H3https://leetcode-cn.com/problems/remove-element/

题目及示例:

解题思路:(与本节题1有相似之处,此处是通过j自减来完成的)

代码如下:

class Solution {
    public int removeElement(int[] nums, int val) {
        int j=nums.length;
        for(int i=0;i<j;){
            if(nums[i]!=val){
              i++;
            }else {
                nums[i]=nums[j-1];
                j--;
            }
        }return j;

    }
}

 感谢观看~

猜你喜欢

转载自blog.csdn.net/weixin_58850105/article/details/123066272