失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > LeetCode 247. 中心对称数

LeetCode 247. 中心对称数

时间:2021-06-02 11:21:50

相关推荐

LeetCode 247. 中心对称数

1. 题目

中心对称数是指一个数字在旋转了 180 度之后看起来依旧相同的数字(或者上下颠倒地看)。

找到所有长度为 n 的中心对称数。

示例 :

输入: n = 2

输出: ["11","69","88","96"]

2. 解题

add1 = {"0","1","8"}add2 = {"00","11","69","88","96"}i 是奇数,我们在 i-1 偶数的基础上每个数中间位置 add1i 是偶数,我们在 i-2 偶数的基础上每个数中间位置 add2

package com.test001;import java.util.ArrayList;import java.util.Arrays;import java.util.HashMap;import java.util.List;import java.util.Map;public class Test001 {public static List<String> centerNumber(int n) {Map<Integer, List<String>> map = new HashMap<Integer, List<String>>();List<String> numberList1 = Arrays.asList("0", "1", "8");List<String> numberList2 = Arrays.asList("11", "69", "88", "96");List<String> add1 = Arrays.asList("0", "1", "8");List<String> add2 = Arrays.asList("00","11", "69", "88", "96");List<String> numberList = new ArrayList<>();if (n <= 0) {return numberList;} else if (n == 1) {return numberList1;} else if (n == 2) {return numberList2;}map.put(1, numberList1);map.put(2, numberList2);for (int i = 3; i <= n; i++) {numberList = new ArrayList<>();if (i % 2 == 1) {List<String> bastList = map.get(i - 1);for (int j = 0; j < bastList.size(); j++) {String num = bastList.get(j);int h = num.length() / 2;for (int k = 0; k < add1.size(); k++) {numberList.add(num.substring(0, h) + add1.get(k) + num.substring(h));}}map.put(i, numberList);} else {List<String> bastList = map.get(i - 2);for (int j = 0; j < bastList.size(); j++) {String num = bastList.get(j);int h = num.length() / 2;for (int k = 0; k < add2.size(); k++) {numberList.add(num.substring(0, h) + add2.get(k) + num.substring(h));}}map.put(i, numberList);}}return map.get(n);}public static void main(String[] args) {//System.out.println(centerNumber(3));System.out.println(centerNumber(4));System.out.println(centerNumber(5));}}

如果觉得《LeetCode 247. 中心对称数》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。