四月份题解

📅 2026-04-01 📂 2026年归档

1295.统计位数为偶数的数字

原题

我的题解:

class Solution {
    public int findNumbers(int[] nums) {
        Arrays.sort(nums);
        int size=0;
        int power=1;
        for (int i = 0; i < nums.length; i++) {
            double pow = Math.pow(10, power);
            nums[i]= (int) (nums[i]/pow);
            while(nums[i]!=0){
                nums[i]=nums[i]/10;
                power++;
            }
            if(power%2==0) size++;
        }
        return size;
    }
}

官方题解:(真是无所不用其极)

class Solution {
    public int findNumbers(int[] nums) {
        int ans = 0;
        for (int num : nums) {
            if (String.valueOf(num).length() % 2 == 0) {
                ans++;
            }
        }
        return ans;
    }
}

作者:力扣官方题解
链接:https://leetcode.cn/problems/find-numbers-with-even-number-of-digits/solutions/101807/tong-ji-wei-shu-wei-ou-shu-de-shu-zi-by-leetcode-s/
来源:力扣(LeetCode)

155.最小栈

原题

这里是看@宝石发布的题解写的,这个方法很好理解。

public class MinStack {
    Node head;
    public MinStack() {

    }

    public void push(int x) {
        if(head==null) head=new Node(x,x,null);
        else head=new Node(x,Math.min(head.min,x),head);
    }

    public void pop() {
        head=head.next;
    }

    public int top() {
        return head.num;
    }

    public int getMin() {
        return head.min;
    }
}
class Node{
    int num;
    int min;
    Node next;
    public Node(int num,int min,Node next){
        this.num=num;
        this.min=min;
        this.next=next;
    }
}

/**
 * Your MinStack object will be instantiated and called as such:
 * MinStack obj = new MinStack();
 * obj.push(val);
 * obj.pop();
 * int param_3 = obj.top();
 * int param_4 = obj.getMin();
 */

394.字符串解码

原题

把所有字符都存入一个栈中遇到’]‘就进行出栈一直到遇到’[‘,之后再把’['前面的数字进行出栈,在调用StringToChars这个方法,返回值在入栈,这样就可以完美解决嵌套的问题。

class Solution {
    public String decodeString(String s) {
        //让s变成数组方便运算
        char[] charArray = s.toCharArray();
        Stack<Character> stack=new Stack<>();
        StringBuilder stringBuilder=new StringBuilder();
        for (char c : charArray) {
            if(c==']'){
                //找出[]里的字母
                StringBuilder letters = new StringBuilder();
                while(stack.peek()!='['){
                    letters.append(stack.pop());
                }
                //删除'['
                stack.pop();
                //找出数字
                    StringBuilder number=new StringBuilder();
                while(!stack.isEmpty()&&stack.peek()>='0'&&stack.peek()<='9'){
                    number.append(stack.pop());
                }
                for (char stringToChar : StringToChars(Integer.parseInt(number.reverse().toString()), letters.reverse().toString())) {
                    stack.push(stringToChar);
                }
                continue;
            }
            stack.push(c);
        }
        while(!stack.isEmpty()){
            stringBuilder.append(stack.pop());
        }
        return stringBuilder.reverse().toString();
    }

    public char[] StringToChars(int num,String string){
        char[] charArray = string.toCharArray();
        char[] returnChars=new char[charArray.length*num];
        int j=0;
        for (int i = 0; i < num; i++) {
            for (char c : charArray) {
                returnChars[j]=c;
                j++;
            }
        }
        return returnChars;
    }
}

234.回文链表

原题

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public boolean isPalindrome(ListNode head) {
        ListNode reverseHead=null;
        ListNode headNode = head;
        while(headNode!=null){
            reverseHead=new ListNode(headNode.val,reverseHead);
            headNode=headNode.next;
        }
        
        while(head!=null&&reverseHead!=null){
            if(head.val!=reverseHead.val) return false;
            head=head.next;
            reverseHead=reverseHead.next;
        }
        return true;
    }
}
🏠 返回首页 · 查看完整交互体验