Leetcode 247.中心对称数II

1.题目

在这里插入图片描述

2.解法

思路:

  • 如果n == 0,那么返回“” (空字符串)

  • 如果n == 1, 那么返回“0”, “1”, ”8“

  • 如果n == 2, 那么返回 “11” , “69”, “88”, “96”(这里不包含”00“的情况)

  • 如果n == 3, 那么返回 (这里包含”00“的情况,例如"1001")

    “1” + s + “1”

    “6” + s + “9”

    “8” + s + “8”

    “9" + s + “6”

    最外围是对称数,那么s呢,就等于n==1的时候的取值,满足n-2

  • 那么n == 4 也是类似的道理

3.代码

java
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Main {

        public List<String> searchSymmetry(int n, int m){

            /* n == m,因为当m的长度大于2的时候,是可以取到00的
                == 2的时候,是不可以取到00的,因为不合法
            */m
            // 判断不合法情况
            if(n < 0 || m < 0 || n > m){
                throw new IllegalArgumentException("Invalid Input");
            }
            // 递归结束的条件
            if(n == 0) return new ArrayList<String>(Arrays.asList(""));
            if(n == 1) return new ArrayList<String>(Arrays.asList("0", "1", "8"));

            List<String> str = searchSymmetry(n-2, m);
            List<String> res = new ArrayList<String>();

            for(int i = 0; i < str.size(); i++){
                String s = str.get(i);
                // 例如是1001
                if(n != m) res.add("0" + s + "0");
                res.add("1" + s + "1");
                res.add("6" + s + "9");
                res.add("8" + s + "8");
                res.add("9" + s + "6");
            }
           return res;
        }
        
    public static void main(String[] args){

            Main ma = new Main();
            List<String> list = ma.searchSymmetry(3, 3);
            for(String s : list){
                System.out.print(s + " ");
            }
        }
	}
           System.out.print(s + " ");
            }
        }
	}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值