Java每日一练(20230508) Excel表列名称、验证回文串、路径总和II

简介: Java每日一练(20230508) Excel表列名称、验证回文串、路径总和II

1. Excel表列名称


给你一个整数 columnNumber ,返回它在 Excel 表中相对应的列名称。


例如:


A -> 1

B -> 2

C -> 3

...

Z -> 26

AA -> 27

AB -> 28  

...

示例 1:

输入:columnNumber = 1

输出:"A"


示例 2:

输入:columnNumber = 28

输出:"AB"


示例 3:

输入:columnNumber = 701

输出:"ZY"


示例 4:

输入:columnNumber = 2147483647

输出:"FXSHRXW"


提示:

   1 <= columnNumber <= 2^31 - 1


出处:

https://edu.csdn.net/practice/27308135

代码:

import java.util.*;
public class convertToTitle {
    public static class Solution {
        public String convertToTitle(int n) {
            if (n <= 0) {
                return "";
            }
            StringBuilder sb = new StringBuilder();
            while (n > 0) {
                n--;
                sb.append((char) (n % 26 + 'A'));
                n = n / 26;
            }
            return sb.reverse().toString();
        }
    }
    public static void main(String[] args) {
        Solution s = new Solution();
        System.out.println(s.convertToTitle(1));
        System.out.println(s.convertToTitle(28));
        System.out.println(s.convertToTitle(701));
        System.out.println(s.convertToTitle(2147483647));
    }
}


输出:

A

AB

ZY

FXSHRXW


2. 验证回文串


给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。

说明:本题中,我们将空字符串定义为有效的回文串。


示例 1:

输入: "A man, a plan, a canal: Panama"

输出: true

解释:"amanaplanacanalpanama" 是回文串


示例 2:

输入: "race a car"

输出: false

解释:"raceacar" 不是回文串


提示:

   1 <= s.length <= 2 * 10^5

   字符串 s 由 ASCII 字符组成


出处:

https://edu.csdn.net/practice/27308136


代码:

import java.util.*;
public class isPalindrome {
    public static class Solution {
        public boolean isPalindrome(String s) {
            StringBuffer str = new StringBuffer();
            int len = s.length();
            for (int i = 0; i < len; i++) {
                char c = s.charAt(i);
                if (Character.isLetterOrDigit(c)) {
                    str.append(Character.toLowerCase(c));
                }
            }
            int left = 0;
            int right = str.length() - 1;
            while (left < right) {
                if (str.charAt(left) != str.charAt(right)) {
                    return false;
                }
                left++;
                right--;
            }
            return true;
        }
    }
    public static void main(String[] args) {
        Solution s = new Solution();
        System.out.println(s.isPalindrome("A man, a plan, a canal: Panama"));
        System.out.println(s.isPalindrome("race a car"));
    }
}

输出:

true

false


3. 路径总和 II


给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。


叶子节点 是指没有子节点的节点。

示例 1:

image.jpeg


输入:root = [5,4,8,11,null,13,4,7,2,null,null,5,1], targetSum = 22

输出:[[5,4,11,2],[5,8,4,5]]


示例 2:

输入:root = [1,2,3], targetSum = 5

输出:[]


示例 3:

输入:root = [1,2], targetSum = 0

输出:[]


提示:

   树中节点总数在范围 [0, 5000] 内

   -1000 <= Node.val <= 1000

   -1000 <= targetSum <= 1000

出处:

https://edu.csdn.net/practice/27308137

代码:


import java.util.*;
import java.util.LinkedList;
public class pathSum {
    public final static int NULL = Integer.MIN_VALUE; //用NULL来表示空节点
    public static class TreeNode {
        int val;
        TreeNode left;
        TreeNode right;
        TreeNode(int x) {
            val = x;
        }
    }
    public static class Solution {
        public List<List<Integer>> pathSum(TreeNode root, int sum) {
            if (root == null)
                return new ArrayList<>();
            List<List<Integer>> ans = new ArrayList<>();
            if (root.val == sum && root.left == null && root.right == null) {
                List<Integer> arr = new ArrayList<>();
                arr.add(root.val);
                ans.add(arr);
                return ans;
            }
            List<List<Integer>> left = pathSum(root.left, sum - root.val);
            List<List<Integer>> right = pathSum(root.right, sum - root.val);
            for (List<Integer> list : left) {
                list.add(0, root.val);
                ans.add(list);
            }
            for (List<Integer> list : right) {
                list.add(0, root.val);
                ans.add(list);
            }
            return ans;
        }
    }
    public static TreeNode createBinaryTree(Integer[] nums) {
        Vector<Integer> vec = new Vector<Integer>(Arrays.asList(nums));
        if (vec == null || vec.size() == 0) {
            return null;
        }
        Queue<TreeNode> queue = new LinkedList<>();
        TreeNode root = new TreeNode(vec.get(0));
        queue.offer(root);
        int i = 1;
        while (!queue.isEmpty()) {
            int size = queue.size();
            for (int j = 0; j < size; j++) {
                TreeNode node = queue.poll();
                if (i < vec.size() && vec.get(i) != NULL) {
                    node.left = new TreeNode(vec.get(i));
                    queue.offer(node.left);
                }
                i++;
                if (i < vec.size() && vec.get(i) != NULL) {
                    node.right = new TreeNode(vec.get(i));
                    queue.offer(node.right);
                }
                i++;
            }
        }
        return root;
    }
    public static void main(String[] args) {
        Solution s = new Solution();
        Integer[] nums = {5,4,8,11,NULL,13,4,7,2,NULL,NULL,5,1};
        int targetSum = 22;
        TreeNode root = createBinaryTree(nums);
        System.out.println(s.pathSum(root, targetSum));
    }
}



输出:

[[5, 4, 11, 2], [5, 8, 4, 5]]

目录
相关文章
|
2月前
|
Java
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
84 9
|
30天前
|
Java
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
88 34
|
2月前
|
JSON Java 程序员
Java|如何用一个统一结构接收成员名称不固定的数据
本文介绍了一种 Java 中如何用一个统一结构接收成员名称不固定的数据的方法。
30 3
|
2月前
|
Java Android开发
Eclipse Java 构建路径
Eclipse Java 构建路径
42 3
|
3月前
|
IDE Java 编译器
Java:如何确定编译和运行时类路径是否一致
类路径(Classpath)是JVM用于查找类文件的路径列表,对编译和运行Java程序至关重要。编译时通过`javac -classpath`指定,运行时通过`java -classpath`指定。IDE如Eclipse和IntelliJ IDEA也提供界面管理类路径。确保编译和运行时类路径一致,特别是外部库和项目内部类的路径设置。
233 5
|
3月前
|
Java
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
73 2
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
|
8月前
|
消息中间件 前端开发 Java
java学习路径
【4月更文挑战第9天】java学习路径
97 1
|
8月前
|
设计模式 前端开发 安全
Java是一种广泛使用的编程语言,其学习路径可以大致分为以下几个阶段
【4月更文挑战第9天】Java是一种广泛使用的编程语言,其学习路径可以大致分为以下几个阶段
60 1
|
6月前
|
设计模式 算法 Oracle
Java语言学习路径及学习资源推荐
Java语言学习路径及学习资源推荐
|
设计模式 算法 Java
【Java设计模式 学习目标及大纲】高质量代码的标准及实现路径
【Java设计模式 学习目标及大纲】高质量代码的标准及实现路径
116 0