LeetCode题目Java代码解答 (详细解释!!!)

目录

1 . 两数之和 (序号是在LeetCode中的题号)

两数之和代码:

9 . 回文数

 回文数代码:

242 . 有效的字母异位词

有效的字母异位词代码:

1 . 两数之和 (序号是在LeetCode中的题号)

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target  的那 两个 整数,并返回它们的数组下标。

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。

你可以按任意顺序返回答案。

示例 1:

输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。

示例 2:

输入:nums = [3,2,4], target = 6
输出:[1,2]

示例 3:

输入:nums = [3,3], target = 6
输出:[0,1]

提示:

2 <= nums.length <= 104
-109 <= nums[i] <= 109
-109 <= target <= 109
只会存在一个有效答案

两数之和代码:

class Solution {
    public int[] twoSum(int[] nums, int target) {
        for(int i = 0;i

9 . 回文数

给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。

回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

例如,121 是回文,而 123 不是。

示例 1:

输入:x  =  121
输出:true

示例 2:

输入:x  =  -121
输出:false
解释:从左向右读,为  -121 。 从右向左读,为 121-  。因此它不是一个回文数。

 

示例 3:

输入:x  =  10
输出:false
解释:从右向左读,为  01 。因此它不是一个回文数。

提示:

  • -231 <= x <= 231 - 1

 回文数代码:

class Solution {
    public boolean isPalindrome(int x) {
        if(x<0){
            return false;
        }
        int n = 0;
        int a = x;
        while(a!=0){
            n = n*10 + a%10; // 第一次算出来的是x的个位,就是n的百位,依次往前乘10进一位
            a = a/10;  // 第一次去除个位,然后依次往前去除
        }
        return n == x;
    }
}

242 . 有效的字母异位词

给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。

注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。

示例 1:

输入:s  =  "anagram" ,t  =  "nagaram"
输出:true

示例 2:

输入:s  =  "rat" ,t  =  "car"
输出:false

提示:

  • 1 <= s.length, t.length <= 5 * 104
  • s 和 t 仅包含小写字母

有效的字母异位词代码:

class Solution {
    public boolean isAnagram(String s, String t) {
        if(s.length()!=t.length()){
            // 如果两个字符串的长度不一样,直接返回false
            return false;
        }
        // 创建一个新数组来放26个小写字母
        int[] arr = new int[26];
        for(int i = 0;i < s.length();i++){
            // 将26个字母顺序排列,然后其索引值对应该字母减去a的值
            arr[s.charAt(i)-'a']++; // s中出现的字母+1
            arr[t.charAt(i)-'a']--; // t中出现的字母-1

        }
        // 在arr数组里遍历查看所有值是否都为0
        for(int i=0;i<26;i++){
            if(arr[i]!=0){ // 有不为0的数表示两个字符串有不同的字符
                return false;
            }
        }
        return true;
    }
}

 

你可能感兴趣的:(java,leetcode,算法)