学院二级网站建设方案模板湖北做网站

张小明 2025/12/31 22:29:27
学院二级网站建设方案模板,湖北做网站,网站里面送礼物要钱怎么做代码,网站运营公司排名(新卷,100分)- 字符串分割#xff08;Java JS Python#xff09;题目描述给定非空字符串s#xff0c;将该字符串分割成一些子串#xff0c;使每个子串的ASCII码值的和均为水仙花数。1、若分割不成功#xff0c;则返回0#xff1b;2、若分割成功且分割结果不唯…(新卷,100分)- 字符串分割Java JS Python题目描述给定非空字符串s将该字符串分割成一些子串使每个子串的ASCII码值的和均为水仙花数。1、若分割不成功则返回02、若分割成功且分割结果不唯一则返回-13、若分割成功且分割结果唯一则返回分割后子串的数目。输入描述输入字符串的最大长度为200输出描述根据题目描述中情况返回相应的结果。备注水仙花数是指一个三位数每位上数字的立方和等于该数字本身如 371 是’水仙花数’因为 3713^37^31^3用例输入abc输出0说明分割不成功输入f3d5a8输出-1说明分割成功但分割结果不唯一可以分割为两组一组’f3’和’d5a8’另外一组’f3d5’和’a8’输入AXdddF输出2说明分割成功且分割结果唯一可以分割’AX’(153)和’dddF’(370)成两个子串题目解析我的解题思路如下首先将输入字符串变为一个ascii码值数组arr比如f3d5a8就变为了 [102,51,64,100,53,97,56]然后处理逻辑如下let sum 0 for(let i0; iarr.length; i) { sum arr[i] if(isSxh(sum)) { // 如果sum是水仙花数则0~i子串可以组成水仙花数下一个子串从i1开始 let sum2 0 for(let ji1; jarr.length; j) { sum2 arr[j] if(isSxh(sum2)) {// 如果sum2是水仙花数则i1~j子串可以组成水仙花数下一个子串从j1开始 let sum3 0 for(let kj1; karr.length; k) { sum3 arr[k] if(isSxh(sum3)) {// 如果sum3是水仙花数则j1~k子串可以组成水仙花数下一个子串从k1开始 // 重复以上逻辑 } } } } } }可以发现上面逻辑可以使用递归来实现当递归到子串长度为0时结束或者无法没有下一次递归时结束。在递归过程中我们可以统计到一共有多少种分割方式每种分割方式将字符串分为几段。如果有0种分割方式则打印0如果有1种分割方式则打印该分割方式可以将字符串分为几段如果有2种或以上分割方式则打印-1本题还有一个优化点就是基于前缀和实现O(1)时间求解任意区间的元素之和。OJ用例库为了产生这样的子串ASCII码值的和均为水仙花数因此输入的字符串中会存在一些不常用的字符这些字符可能会对输入获取逻辑产生影响比如Java语言按照Scanner获取的话则会以空白字符作为输入获取截止符因此我们需要通过useDelimiter指定只有换行符才能截止输入获取。具体请看下面Java代码的输入获取逻辑。对于JS和Python没有此类问题。Java算法源码import java.util.ArrayList; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc new Scanner(System.in).useDelimiter([\n]); System.out.println(getResult(sc.next())); } public static int getResult(String s) { // 将字符串转化为ASCII数组 char[] cArr s.toCharArray(); int n cArr.length; // 前缀和实现O(1)时间求解某区间内元素之和 int[] preSum new int[n 1]; for (int i 1; i n; i) preSum[i] preSum[i - 1] cArr[i - 1]; // res记录成功分割的情况 ArrayListInteger res new ArrayList(); // 递归 recursive(preSum, n, 0, 0, res); if (res.size() 0) return 0; else if (res.size() 1) return res.get(0); else return -1; } public static void recursive(int[] preSum, int n, int start, int count, ArrayListInteger res) { if (start n) { res.add(count); return; } for (int end start 1; end n; end) { // 基于前缀和快速求解任意区间内的元素和 if (isSxh(preSum[end] - preSum[start])) { recursive(preSum, n, end, count 1, res); } } } // 判断num是否为水仙花数 public static boolean isSxh(int num) { if (num 99 || num 1000) return false; int x num / 100 % 10; int y num / 10 % 10; int z num % 10; return num x * x * x y * y * y z * z * z; } }JS算法源码/* JavaScript Node ACM模式 控制台输入获取 */ const readline require(readline); const rl readline.createInterface({ input: process.stdin, output: process.stdout, }); rl.on(line, (line) { console.log(getResult(line)); }); function getResult(str) { // 将字符串转化为ASCII数组 const cArr [...str].map((ele) ele.charCodeAt()); const n cArr.length; // 前缀和实现O(1)时间求解某区间内元素之和 const preSum new Array(n 1).fill(0); for (let i 1; i n; i) preSum[i] preSum[i - 1] cArr[i - 1]; // res记录成功分割的情况 const res []; // 递归 recursive(preSum, n, 0, 0, res); if (res.length 0) return 0; else if (res.length 1) return res[0]; else return -1; } function recursive(preSum, n, start, count, res) { if (start n) { res.push(count); return; } for (let end start 1; end n; end) { // 基于前缀和快速求解任意区间内的元素和 if (isSxh(preSum[end] - preSum[start])) { recursive(preSum, n, end, count 1, res); } } } /* 判断入参是否为水仙花数 */ function isSxh(num) { if (num 99 || num 1000) return false; const x parseInt(num / 100) % 10; const y parseInt(num / 10) % 10; const z num % 10; return num x * x * x y * y * y z * z * z; }Python算法源码# 输入获取 s input() # 判断num是否未水仙花数 def isSxh(num): if num 99 or num 1000: return False x, y, z [int(c) for c in str(num)] return num x ** 3 y ** 3 z ** 3 # 递归分割 def recursive(preSum, n, start, count, res): if start n: res.append(count) return for end in range(start 1, n 1): if isSxh(preSum[end] - preSum[start]): recursive(preSum, n, end, count 1, res) # 算法入口 def getResult(): # 将字符串转化为ASCII数组 cArr [ord(c) for c in s] n len(cArr) # 前缀和实现O(1)时间求解某区间内元素之和 preSum [0] * (n 1) for i in range(1, n 1): preSum[i] preSum[i - 1] cArr[i - 1] # res记录成功分割的情况 res [] # 递归分割 recursive(preSum, n, 0, 0, res) if len(res) 0: return 0 elif len(res) 1: return res[0] else: return -1 # 算法调用 print(getResult())
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

对于网站建设的体会手机网站字体大小自适应

生成式人工智能的浪潮正引发各领域的颠覆性变革,在学术研究这一知识生产的前沿阵地,其影响尤为显著。文献检索作为科研工作的基石,在AI技术的赋能下各大学术数据库已实现智能化升级。小编特别策划"AI科研导航"系列专题,…

张小明 2025/12/31 16:52:49 网站建设

北京建站推广用php做网站用到的工具

在前端工程化日益成熟的今天,企业级 Vue 项目的架构设计直接决定了项目的可维护性、可扩展性和团队协作效率。不同于中小型项目的 “快速开发” 思路,企业级项目需要从目录结构、模块化拆分、工程化规范等维度进行系统化设计,本文将聚焦目录结…

张小明 2025/12/31 16:52:52 网站建设

天圆地方建筑网站水淼软件wordpress怎么设置

传统的文献搜索,是我们去适应机器的逻辑:拆解关键词、使用布尔运算符(AND, OR, NOT)。而新一代的AI学术工具,正在让机器来适应人类的思维:它们能理解模糊的问题,能联想相关的概念,甚…

张小明 2025/12/31 16:52:50 网站建设

网站区域名怎么注册吗新网站怎样做优化

ZVT量化框架模块化设计终极指南:5步快速上手智能交易系统 【免费下载链接】zvt modular quant framework. 项目地址: https://gitcode.com/foolcage/zvt 如何用ZVT框架在30分钟内搭建你的第一个量化策略?这个基于模块化设计理念的量化投资框架&am…

张小明 2025/12/31 16:52:51 网站建设

百度网站官网入口山西大同网站建设哪家好

3D图像匹配技术实战指南:从零掌握MASt3R核心应用 【免费下载链接】mast3r Grounding Image Matching in 3D with MASt3R 项目地址: https://gitcode.com/GitHub_Trending/ma/mast3r 在计算机视觉领域,3D图像匹配技术正成为增强现实、机器人导航和…

张小明 2025/12/31 16:52:54 网站建设