3.17阿里Java后端,电商 sku 的全排列算法
3.17阿里Java后端
字典
有英文字典:Map<Character, String[]>,示例如下:
a : [a, an]
b : [bus, bird]
c : [car, can, card]
...
z : [zone]
输入 一个a-z组成的字符串,字符串每一位表示字典的key
输出 key映射的单词组成句子的集合(单词之间空格隔开)
示例:
输入:
ab
输出:
"a bus"
"an bus"
"a bird"
"an bird"
思路
递归回溯,也是电商 sku 的全排列算法。
答案
import java.util.*;
class Solution {
public static void main(String[] args) {
Map<Character, String[]> map = new HashMap<>();
String[] str1 = new String[2];
str1[0] = "a";
str1[1] = "an";
map.put('a', str1);
String[] str2 = new String[2];
str2[0] = "bus";
str2[1] = "bird";
map.put('b', str2);
String[] str3 = new String[3];
str3[0] = "car";
str3[1] = "can";
str3[2] = "card";
map.put('c', str3);
Solution solution = new Solution();
Scanner scanner = new Scanner(System.in);
String next = scanner.next();
List<List<String>> list = new ArrayList<>();
for (char c : next.toCharArray()) {
list.add(new ArrayList<>(Arrays.asList(map.get(c))));
}
for (List<String> strings : solution.test(list)) {
System.out.println(strings);
}
}
public List<List<String>> test(List<List<String>> in) {
List<List<String>> out = new ArrayList<>();
List<String> list = new ArrayList<>();
dfs(in, out, list, 0);
return out;
}
private void dfs(List<List<String>> in, List<List<String>> out, List<String> list, Integer index) {
if(list.size() == in.size()) {
out.add(new ArrayList<>(list));
return;
}
List<String> items = in.get(index);
for (int i = 0; i < items.size(); i++) {
list.add(items.get(i));
dfs(in, out, list, index + 1);
list.remove(list.size() - 1);
}
}
}
测试
输入:abc
输出
[a, bus, car]
[a, bus, can]
[a, bus, card]
[a, bird, car]
[a, bird, can]
[a, bird, card]
[an, bus, car]
[an, bus, can]
[an, bus, card]
[an, bird, car]
[an, bird, can]
[an, bird, card]
3.17阿里Java后端,电商 sku 的全排列算法的更多相关文章
- Java生鲜电商平台-Java后端生成Token架构与设计详解
Java生鲜电商平台-Java后端生成Token架构与设计详解 目的:Java开源生鲜电商平台-Java后端生成Token目的是为了用于校验客户端,防止重复提交. 技术选型:用开源的JWT架构. 1. ...
- Java生鲜电商平台-商品的spu和sku数据结构设计与架构
Java生鲜电商平台-商品的spu和sku数据结构设计与架构 1. 先说明几个概念. 电商网站采用在商品模块,常采用spu+sku的数据结构算法,这种算法可以将商品的属性和商品的基本信息分离,分开维护 ...
- Java生鲜电商平台-生鲜电商中商品类目、属性、品牌、单位架构设计与实战
Java生鲜电商平台-生鲜电商中商品类目.属性.品牌.单位架构设计与实战 说明:Java生鲜电商平台-生鲜电商中商品类目.属性.品牌.单位架构设计与实战经验分享 凡是涉及到购物,必然是建立在商品的基础 ...
- Java生鲜电商平台-商家支付系统与对账系统架构实战
Java生鲜电商平台-商家支付系统与对账系统架构实战 说明:关于生鲜电商平台,支付系统是连接消费者.商家(或平台)和金融机构的桥梁,管理支付数据,调用第三方支付平台接口,记录支付信息(对应订单号,支付 ...
- Java生鲜电商平台-优惠券系统的架构设计与源码解析
Java生鲜电商平台-优惠券系统的架构设计与源码解析 电商后台:实例解读促销系统 电商后台系统包括商品管理系统.采购系统.仓储系统.订单系统.促销系统.维权系统.财务系统.会员系统.权限系统等,各系统 ...
- Java生鲜电商平台-商城后台架构与原型图实战
Java生鲜电商平台-商城后台架构与原型图实战 说明:生鲜电商平台的运营平台,其中需要很多的功能进行管理.目前把架构与原型图实战分享给大家,希望对大家有用. 仪表盘/首页,简单统计,报表页,运营快捷口 ...
- Java生鲜电商平台-商品基础业务架构设计-商品设计
Java生鲜电商平台-商品基础业务架构设计-商品设计 在生鲜电商的商品中心,在电子商务公司一般是后台管理商品的地方.在前端而言,是商家为了展示商品信息给用户的地方,它是承担了商品的数据,订单,营销活动 ...
- Java生鲜电商平台-生鲜系统中商品订单系统售后系统设计
Java生鲜电商平台-生鲜系统中商品订单系统售后系统设计(服务订单履约系统) 说明: 电商之下,我们几乎能从电商平台上买到任何我们日常需要的商品,但是对于很多商品来说,用户购买发货后,只是整个交易流程 ...
- Java生鲜电商平台-生鲜系统中微服务架构设计与分析实战
Java生鲜电商平台-生鲜系统中微服务架构设计与分析实战 说明: Java生鲜系统中微服务的拆分应该如何架构设计与分析呢?以下是我的实战中的设计与经验分析. 目录 1. 微服务简介2. 当前现状3. ...
- Java生鲜电商平台-SpringCloud微服务架构中分布式事务解决方案
Java生鲜电商平台-SpringCloud微服务架构中分布式事务解决方案 说明:Java生鲜电商平台中由于采用了微服务架构进行业务的处理,买家,卖家,配送,销售,供应商等进行服务化,但是不可避免存在 ...
随机推荐
- PyTorch之初级使用
使用流程①. 数据准备; ②. 模型确立; ③. 损失函数确立; ④. 优化器确立; ⑤. 模型训练及保存 模块介绍Part Ⅰ: 数据准备torch.utils.data.Dataset torch ...
- URLDecoder.decode() 特殊字符的处理
在网络get请求中,如果存在特殊字符 比如 "+,/,%,&,= " ,如果没有被转义就直接使用 发现 + 号 仍然是 + 号,初看上去是没什么问题 这样在我们在后台接 ...
- MySQL---MGR保姆版
一.环境清理: 三台机器都做: 1.修改主机名 2.修改/etc/hosts文件 3.关闭和禁用防火墙 4.关闭和禁用SELinux 5.生成密钥对 6.传输密钥对 7.验证免密登陆 yum remo ...
- [Javascript摸鱼记录] 关于js简单字符删减替换增加插入追加前中后处理
以前总是怕死js如其名,能让我入坑润不出来,然后最近被迫写点静态html,又要用到数值运算处理, 于是又开启了「好几十个标签栏解决一个问题」的"探索路程",顺便记录一下摸鱼结果希望 ...
- [转载]OpenCV中的channel是什么意思?
转载自https://answers.opencv.org/question/7585/meaning-of-channels/ 简单来说,就是描述一个pixel的颜色用多少个独立的参数描述,这个个数 ...
- 学习高速PCB设计,这些走线方式你要知道! 高速射频百花潭 2022-01-21 08:53
1.电源布局布线相关 数字电路很多时候需要的电流是不连续的,所以对一些高速器件就会产生浪涌电流. 如果电源走线很长,则由于浪涌电流的存在进而会导致高频噪声,而此高频噪声会引入到其他信号中去. 而在高速 ...
- CSV文件乱码处理方法
如果csv出现乱码, 直接用记事本打开另存为的格式从utf-8变为ANSI模式即可. 然后再打开
- spring 使用@Async注解实现异步调用
1.先定义一个事件,该类继承 ApplicationEven的抽象类 import org.springframework.context.ApplicationEvent; public class ...
- centos7.2下配置DNS服务器
https://baijiahao.baidu.com/s?id=1748980460185046641&wfr=spider&for=pc 1.安装bind(服务器) yum -y ...
- 【TensorFlow】Tensorflow-GPU 环境搭建教程(附 Windows 版本对应表及 CUDA GPU 计算能力表)
conda教程(推荐):『Tensorflow GPU Installation Made Easy: Use conda instead of pip [Update-2] | by Harveen ...