提升网站访问量做家装的网站有哪些内容

张小明 2026/1/11 9:49:23
提升网站访问量,做家装的网站有哪些内容,网络营销策划推广,ftp不能上传wordpress(新卷,200分)- 字符串比较#xff08;Java JS Python#xff09;题目描述给定字符串A、B和正整数V#xff0c;A的长度与B的长度相等#xff0c; 请计算A中满足如下条件的最大连续子串的长度#xff1a;该连续子串在A和B中的位置和长度均相同。该连续子串|A[i]…(新卷,200分)- 字符串比较Java JS Python题目描述给定字符串A、B和正整数VA的长度与B的长度相等 请计算A中满足如下条件的最大连续子串的长度该连续子串在A和B中的位置和长度均相同。该连续子串|A[i] – B[i]|之和小于等于V。其中|A[i] – B[i]|表示两个字母ASCII码之差的绝对值。输入描述输入为三行第一行为字符串A仅包含小写字符1 A.length 1000。第二行为字符串B仅包含小写字符1 B.length 1000。第三行为正整数V0 V 10000。输出描述字符串最大连续子串的长度要求该子串|A[i] – B[i]|之和小于等于V。用例输入xxcdefgcdefghi5输出2说明字符串A为xxcdefg字符串B为cdefghiV5。它的最大连续子串可以是cd-ef,de-fg,ef-gh,fg-hi所以最大连续子串是2。题目解析本题其实可以转化为求解和不超过v的最长连续子序列问题。原始数组就是上面的ascii码差值绝对值数组diff[21, 20, 2, 2, 2, 2, 2]本题数量级不大diff数组的长度最大1000因此我们只要求出区间和v的所有区间取其中最长的即可。这里任意区间的区间和求解可以通过前缀和完成或者我们可以利用滑动窗口来求解和不超过v的最长连续子序列问题。我们可以定义两个指针L,R分别代表滑窗的左右边界初始化时LR都为0然后再定义一个滑窗内部和sum初始为diff[r]接下来判断sum和v的大小如果 sum v则说明滑窗内部和过小我们应该将滑窗的右边界R来扩大滑窗滑窗内部和sum diff[R]需要注意的是这里我们需要注意R越界问题需要先判断R是否越界如果未越界才能sum diff[R]如果 sum v则说明滑窗内部和刚刚好我们应该记录此时滑窗对应的连续子序列长度R - L 1 作为一个可能解接下来就是滑窗左右边界的移动问题按照以往滑窗运动经验此时应该LR但是这里我们只应该做R而不应该做L原因是后续的diff[i]可能都是0即不会增加sum只会增加连续子序列的长度因此如果这种情况做了L的话我们会得不到最优解。同样地这里做R也需要注意R越界问题只有R后不越界我们才能sum diff[R]如果 sum v我们应该让滑窗左边界L来减少sum即sum - diff[L]但是在做滑窗左边界L之前我们应该确认一下上一个状态的滑窗即范围是[L, R-1]的滑窗是否是满足sum v的滑窗如果是则我们需要记录上一个滑窗的长度R - L需要注意的是当前滑窗做滑窗左边界L后L是有可能超过R的因此我们需要保证L超过R后R的位置要更新到等于L的地方此时又相当于给滑窗sum diff[R]同样地需要注意R更新位置的越界问题即只有RL后不越界才能sum diff[R]前缀和解法Java算法源码import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc new Scanner(System.in); String a sc.nextLine(); String b sc.nextLine(); int v Integer.parseInt(sc.nextLine()); System.out.println(getResult(a, b, v)); } public static int getResult(String a, String b, int v) { int n a.length(); // a,b字符串的各位字符的ascii绝对值差距数组 int[] preSum new int[n 1]; for (int i 1; i n; i) { preSum[i] preSum[i - 1] Math.abs(a.charAt(i - 1) - b.charAt(i - 1)); } // 记录题解 int ans 0; for (int l 0; l n - 1; l) { for (int r l 1; r n; r) { // 区间 [l1, r]的和 preSum[r] - preSum[l] if (preSum[r] - preSum[l] v) { ans Math.max(ans, r - l); } } } return ans; } }JS算法源码/* JavaScript Node ACM模式 控制台输入获取 */ const readline require(readline); const rl readline.createInterface({ input: process.stdin, output: process.stdout, }); const lines []; rl.on(line, (line) { lines.push(line); if (lines.length 3) { let a lines[0]; let b lines[1]; let v parseInt(lines[2]); console.log(getResult(a, b, v)); lines.length 0; } }); function getResult(a, b, v) { const n a.length; // a,b字符串的各位字符的ascii绝对值差距数组 const preSum new Array(n 1).fill(0); for (let i 1; i n; i) { preSum[i] preSum[i - 1] Math.abs(a[i - 1].charCodeAt() - b[i - 1].charCodeAt()); } // 记录题解 let ans 0; for (let l 0; l n - 1; l) { for (let r l 1; r n; r) { // 区间 [l1, r]的和 preSum[r] - preSum[l] if (preSum[r] - preSum[l] v) { ans Math.max(ans, r - l); } } } return ans; }Python算法源码# 输入获取 a input() b input() v int(input()) # 算法入口 def getResult(): n len(a) # a,b字符串的各位字符的ascii绝对值差距数组 preSum [0] * (n1) for i in range(1, n1): preSum[i] preSum[i-1] abs(ord(a[i-1]) - ord(b[i-1])) # 记录题解 ans 0 for l in range(n): for r in range(l1, n1): # 区间 [l1, r]的和 preSum[r] - preSum[l] if preSum[r] - preSum[l] v: ans max(ans, r-l) return ans # 调用算法 print(getResult())滑动窗口解法Java算法源码import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc new Scanner(System.in); String a sc.nextLine(); String b sc.nextLine(); int v Integer.parseInt(sc.nextLine()); System.out.println(getResult(a, b, v)); } public static int getResult(String a, String b, int v) { int n a.length(); // a,b字符串的各位字符的ascii绝对值差距数组 int[] diff new int[n]; for (int i 0; i n; i) { diff[i] Math.abs(a.charAt(i) - b.charAt(i)); } // 记录题解 int ans 0; // 滑窗左右边界 int l 0; int r 0; // 初始滑窗的内部和 int sum diff[r]; while (r n) { if (sum v) { // 如果滑窗内部和超过了v则我们需要先记录上一个滑窗[l, r-1]的长度 if (sum - diff[r] v) ans Math.max(ans, r - l); // 然后由于当前滑窗内部和已经超过了v因此需要减少滑窗内部和只能让滑窗左边界1内部和减去失去的diff[l] sum - diff[l]; if (r l) { // 注意左边界右移不能超过右边界如果超过了则右边界也需要1即变为左边界位置此时内部和需要加入新右边界值diff[r] r l; if (r n) sum diff[r]; } } else { // 如果滑窗内部和没有超过v if (sum v) { // 如果滑窗内部和v,那么当前滑窗就是一个符合要求的需要记录此时滑窗[l,r]的长度 ans Math.max(ans, r - l 1); } // 接下来只做滑窗右边界1注意右边界不能越界滑窗需要纳入新右边界只 // 这里没有做左边界1 动作是因为后续的diff有可能都为0 // 比如diff [0, 5, 0, 0, 0], v5, 当L0R1时符合当前条件如果此处做了l,r,那么将得不到最大长度 if (r n) sum diff[r]; } } // 注意收尾处理即最后必然是r越界结束循环因此最后一轮滑窗范围是[l, r-1] return Math.max(ans, r - l); } }JS算法源码/* JavaScript Node ACM模式 控制台输入获取 */ const readline require(readline); const rl readline.createInterface({ input: process.stdin, output: process.stdout, }); const lines []; rl.on(line, (line) { lines.push(line); if (lines.length 3) { let a lines[0]; let b lines[1]; let v parseInt(lines[2]); console.log(getResult(a, b, v)); lines.length 0; } }); function getResult(a, b, v) { const n a.length; // a,b字符串的各位字符的ascii绝对值差距数组 const diff new Array(n); for (let i 0; i n; i) { diff[i] Math.abs(a[i].charCodeAt() - b[i].charCodeAt()); } // 记录题解 let ans 0; // 滑窗左右边界 let l 0; let r 0; // 初始滑窗的内部和 let sum diff[r]; while (r n) { if (sum v) { // 如果滑窗内部和超过了v则我们需要先记录上一个滑窗[l, r-1]的长度 if (sum - diff[r] v) ans Math.max(ans, r - l); // 然后由于当前滑窗内部和已经超过了v因此需要减少滑窗内部和只能让滑窗左边界1内部和减去失去的diff[l] sum - diff[l]; if (r l) { // 注意左边界右移不能超过右边界如果超过了则右边界也需要1即变为左边界位置此时内部和需要加入新右边界值diff[r] r l; if (r n) sum diff[r]; } } else { // 如果滑窗内部和没有超过v if (sum v) { // 如果滑窗内部和v,那么当前滑窗就是一个符合要求的需要记录此时滑窗[l,r]的长度 ans Math.max(ans, r - l 1); } // 接下来只做滑窗右边界1注意右边界不能越界滑窗需要纳入新右边界只 // 这里没有做左边界1 动作是因为后续的diff有可能都为0 // 比如diff [0, 5, 0, 0, 0], v5, 当L0R1时符合当前条件如果此处做了l,r,那么将得不到最大长度 if (r n) sum diff[r]; } } // 注意收尾处理即最后必然是r越界结束循环因此最后一轮滑窗范围是[l, r-1] return Math.max(ans, r - l); }Python算法源码# 输入获取 a input() b input() v int(input()) # 算法入口 def getResult(): n len(a) # a,b字符串的各位字符的ascii绝对值差距数组 diff [0] * n for i in range(n): diff[i] abs(ord(a[i]) - ord(b[i])) # 记录题解 ans 0 # 滑窗左右边界 l 0 r 0 # 初始滑窗的内部和 total diff[r] while r n: if total v: # 如果滑窗内部和超过了v则我们需要先记录上一个滑窗[l, r-1]的长度 if total - diff[r] v: ans max(ans, r - l) # 然后由于当前滑窗内部和已经超过了v因此需要减少滑窗内部和只能让滑窗左边界1内部和减去失去的diff[l] total - diff[l] l 1 if r l: # 注意左边界右移不能超过右边界如果超过了则右边界也需要1即变为左边界位置此时内部和需要加入新右边界值diff[r] r l if r n: total diff[r] else: # 如果滑窗内部和没有超过v if total v: # 如果滑窗内部和v,那么当前滑窗就是一个符合要求的需要记录此时滑窗[l,r]的长度 ans max(ans, r - l 1) # 接下来只做滑窗右边界1注意右边界不能越界滑窗需要纳入新右边界值 # 这里没有做左边界1 动作是因为后续的diff有可能都为0 # 比如diff [0, 5, 0, 0, 0], v5, 当L0R1时符合当前条件如果此处做了l,r,那么将得不到最大长度 r 1 if r n: total diff[r] # 注意收尾处理即最后必然是r越界结束循环因此最后一轮滑窗范围是[l, r-1] return max(ans, r-l) # 调用算法 print(getResult())
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

网站流量赚钱中国万方官网

深度解析librdkafka:从源码编译到高性能Kafka客户端的实战指南 【免费下载链接】librdkafka The Apache Kafka C/C library 项目地址: https://gitcode.com/GitHub_Trending/li/librdkafka Apache Kafka作为现代分布式系统的核心消息中间件,其C/C…

张小明 2026/1/9 1:26:50 网站建设

什么网站可以免费做视频的软件博学云网站建设

CTFCrackTools终极指南:快速掌握CTF密码学工具框架 【免费下载链接】CTFCrackTools 项目地址: https://gitcode.com/gh_mirrors/ctf/CTFCrackTools CTFCrackTools是国内首款专为CTF比赛设计的密码学工具框架,集成了主流加密算法与Python插件系统…

张小明 2026/1/6 5:47:33 网站建设

教你如何快速建站网站建设如何赚钱

使用Miniconda-Python3.11安装OpenCV进行图像预处理 在当今计算机视觉项目中,一个常见的困扰是:为什么同样的代码在同事的机器上运行流畅,到了自己这里却报错不断?依赖冲突、版本不兼容、环境混乱——这些问题往往让开发者花费大量…

张小明 2026/1/9 9:28:38 网站建设

手机网站轮播图图片编辑软件加文字

从零搞懂LED恒流驱动:一个采样电阻背后的闭环控制艺术你有没有想过,为什么家里的LED灯不管电压怎么波动,亮度始终稳定如一?为什么汽车大灯在颠簸中也不会忽明忽暗?这背后其实藏着一个看似简单却极为精巧的“电流管家”…

张小明 2026/1/6 5:46:24 网站建设

南阳网站排名优化报价外包公司网站开发

NSC_BUILDER是一款专为Nintendo Switch设计的全能文件管理工具,被誉为"Switch玩家的多功能工具"。这款强大的游戏备份工具能够帮助你轻松处理各种Switch文件格式,让复杂的文件操作变得简单高效。 【免费下载链接】NSC_BUILDER Nintendo Switch…

张小明 2026/1/9 17:47:03 网站建设