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生鲜电商平台中由于采用了微服务架构进行业务的处理,买家,卖家,配送,销售,供应商等进行服务化,但是不可避免存在 ...
随机推荐
- Linux 第五节 (shell脚本while循环,case,计划任务,用户及权限)
#!/bin/bash #this is a test script PRICE=$(expr $RANDOM % 1000) //将随机得出的数字取余 TIMES=0 while true do ...
- Day25:报告编写等
今天完成的任务: 1.完成全部结论的编写,完成一部分界面测试的撰写. 2.完成moodle配置 明日计划: 1.完成前端的原型介绍 2.完善前端设计与实现报告 每日小结: 今天完成了最后一次的答辩, ...
- linux下进程通信总结
信号: 信号是通知发生了某种事件的机制,内核和进程都可能会向进程发送各种信号,进程也可以向自己发送信号.系统定义了一组标准信号类型,每种信号都拥有唯一的数值和用途.典型的信号递送是异步的,意味着进程可 ...
- gin框架笔记
1.实现http://127.0.0.1:8080/index.html的形式访问前端页面.gin-contrib/static 使用中间件的方式判断是否存在该静态文件.fileserver 是一个 ...
- QE11 / QE51N 界面太小问题
修复后界面是,修复前常规页签中的数据只能显示4行,需要的note是 2639352 , SNOTE 进行打补丁就好 note是 2639352
- OCR接口
OCR基础框 import pytesseract from PIL import Image img = Image.open('实际数据1.jpeg') #具体位置截图 image1 = Imag ...
- 学习-Vue2-Vue实例-数据与方法-数据的响应式
当一个实例被创建时,它将data对象中的所有的property加入到Vue的响应式系统中. 当这些property的值发生改变时,视图将会产生"响应",即匹配更新为新的值.当这些数 ...
- mysql在windows下安装
参考博客:https://blog.csdn.net/weixin_43423484/article/details/124408565
- MVC页面加载速度优化小记
前言: 最近做一个地图展示页面,业务初期没什么问题,运行一阵后报错: Error during serialization or deserialization using the JSON Jav ...
- java基于ssm框架开发的视频论坛网站源码
简介 Java基于ssm开发的视频论坛网站,普通用户可以浏览视频搜索视频评论点赞收藏视频,关注用户.还可以浏览新闻,发布帖子到论坛. 演示视频 https://www.bilibili.com/vid ...