深圳网站建设哪家好搭建这个平台
2026/3/26 17:04:57 网站建设 项目流程
深圳网站建设哪家好,搭建这个平台,前端代码生成器,近三天的国内新闻(新卷,200分)- 去除多余空格#xff08;Java JS Python#xff09;题目描述去除文本多余空格#xff0c;但不去除配对单引号之间的多余空格。给出关键词的起始和结束下标#xff0c;去除多余空格后刷新关键词的起始和结束下标。条件约束#xff1a; 1#xf…(新卷,200分)- 去除多余空格Java JS Python题目描述去除文本多余空格但不去除配对单引号之间的多余空格。给出关键词的起始和结束下标去除多余空格后刷新关键词的起始和结束下标。条件约束1不考虑关键词起始和结束位置为空格的场景2单词的的开始和结束下标保证涵盖一个完整的单词即一个坐标对开始和结束下标之间不会有多余的空格3如果有单引号则用例保证单引号成对出现4关键词可能会重复5文本字符长度length取值范围[0, 100000];输入描述输入为两行字符串第一行待去除多余空格的文本用例保证如果有单引号则单引号成对出现且单引号可能有多对。第二行关键词的开始和结束坐标关键词间以逗号区分关键词内的开始和结束位置以单空格区分。输出描述输出为两行字符串第一行去除多余空格后的文本第二行去除多余空格后的关键词的坐标开始和结束位置为数组方式输出。用例输入Life is painting a picture, not doing a sum.8 15,20 26,43 45输出Life is painting a picture, not doing a sum.[8, 15][19, 25][42, 44]说明a和picture中间多余的空格进行删除输入Life is painting a picture, not doing a sum.8 15,19 25,42 44输出Life is painting a picture, not doing a sum.[8, 15][19, 25][42, 44]说明a和sum之间有多余的空格但是因为有成对单引号不去除多余空格题目解析用例1图示用例2图示我的解题思路如下定义一个数组needDel记录需要被删除的空格的位置定义一个变量quotaStart记录是否已有未闭合的单引号默认为false即没有。遍历输入字符串的每一个字符首先看被遍历的字符c是不是 空格如果不是则继续后面逻辑如果是则看当前遍历字符的前一个字符是不是也是“ ”如果不是则继续后面逻辑如果是则看quotaStart是否为false若不是则继续后面逻辑若是则说明空格c就是需要删除的空格我们将其索引位置记录到needDel中然后看遍历的字符c是不是单引号若是则将quotaStart取反表示单引号开闭当扫描完后我们就可以做两件事1、将输入字符串转为数组根据needDel中记录的索引来删除对应空格即替换对应数组元素为“”空串然后将数组join后打印2、双重for外层遍历needDel获得每一个要删除的空格的索引内存遍历题目第一行输入的多组开始、结束位置arr如果要删除的空格处于开始位置之前则对应开始结束位置都要减去1。我们需要注意的是我们不能基于原始的arr处理应该对arr进行深拷贝后对拷贝数组进行处理因为如果基于原始arr进行处理则会造成needDel中要删除的索引和arr中记录的索引不同步。比如 needDel [18,19]arr [ [8,15], [20,26], [43,45] ]如果我们直接在arr上进行操作则首先needDel遍历出18然后对比每一个arr范围的开始位置发现[20,26], [43,45]在18后面因此当18位置的空格删除后这两个范围都要前移因此arr变为了[[8,15], [19,25], [42,44]]。之后needDel遍历出19然后对比每一个arr范围的开始位置发现和[19,25]产生了冲突因为19坐标位置既是要删除的空格又是一个关键词的起始位置造成这种冲突的原因是此时needDel 19 和 arr范围[19,25] 已经不同步了。因此我们要对arr进行深拷贝后数组元素是数组需要深拷贝可以使用最简单的JSON方法实现深拷贝然后needDel和原始arr进行对比操作具体范围移动操作在arr的拷贝对象上处理。但是本题的文本字符长度length取值范围[0, 100000];这个有点大啊会不会爆内存呢有点悬。JavaScript算法源码克隆版85%通过率/* 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 2) { const str lines[0]; const arr lines[1].split(,).map((pos) pos.split( ).map(Number)); getResult(arr, str); lines.length 0; } }); function getResult(arr, str) { let quotaStart false; const needDel []; for (let i 0; i str.length; i) { if (str[i] str[i - 1] !quotaStart) { needDel.push(i); } if (str[i] ) { quotaStart !quotaStart; } } const strArr [...str]; const ans JSON.parse(JSON.stringify(arr)); // 深拷贝 for (let del of needDel) { strArr[del] ; for (let i 0; i arr.length; i) { const [start] arr[i]; if (del start) { ans[i][0]--; ans[i][1]--; } } } console.log(strArr.join()); console.log(ans.map((ran) [${ran.join(, )}]).join()); }倒序版/* 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 2) { const str lines[0]; const arr lines[1].split(,).map((pos) pos.split( ).map(Number)); getResult(arr, str); lines.length 0; } }); function getResult(arr, str) { let quotaStart false; const needDel []; for (let i 0; i str.length; i) { if (str[i] str[i - 1] !quotaStart) { needDel.push(i); } if (str[i] ) { quotaStart !quotaStart; } } const strArr [...str]; for (let i needDel.length - 1; i 0; i--) { const del needDel[i]; strArr[del] ; for (let i 0; i arr.length; i) { const start arr[i][0]; if (del start) { arr[i][0]--; arr[i][1]--; } } } console.log(strArr.join()); console.log(arr.map((ran) [${ran.join(, )}]).join()); }Java算法源码克隆版85%通过率import java.util.ArrayList; import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc new Scanner(System.in); String str sc.nextLine(); Integer[][] ranges Arrays.stream(sc.nextLine().split(,)) .map(s - Arrays.stream(s.split( )) .map(Integer::parseInt) .toArray(Integer[]::new)) .toArray(Integer[][]::new); getResult(str, ranges); } public static void getResult(String str, Integer[][] ranges) { boolean quotaStart false; ArrayListInteger needDel new ArrayList(); for (int i 0; i str.length(); i) { if (i 0 str.charAt(i) str.charAt(i - 1) !quotaStart) { needDel.add(i); } if (\ str.charAt(i)) { quotaStart !quotaStart; } } char[] cArr str.toCharArray(); Integer[][] ans Arrays.stream(ranges).map(Integer[]::clone).toArray(Integer[][]::new); for (Integer del : needDel) { cArr[del] \u0000; for (int i 0; i ranges.length; i) { int start ranges[i][0]; if (del start) { ans[i][0]--; ans[i][1]--; } } } System.out.println(new String(cArr).replace(\u0000, )); StringBuilder sb new StringBuilder(); for (Integer[] an : ans) { sb.append(Arrays.toString(an)); } System.out.println(sb); } }倒序版import java.util.ArrayList; import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc new Scanner(System.in); String str sc.nextLine(); Integer[][] ranges Arrays.stream(sc.nextLine().split(,)) .map(s - Arrays.stream(s.split( )).map(Integer::parseInt).toArray(Integer[]::new)) .toArray(Integer[][]::new); getResult(str, ranges); } public static void getResult(String str, Integer[][] ranges) { boolean quotaStart false; ArrayListInteger needDel new ArrayList(); String[] sArr str.split(); for (int i 0; i sArr.length; i) { if (i 0 .equals(sArr[i]) .equals(sArr[i - 1]) !quotaStart) { needDel.add(i); } if (.equals(sArr[i])) { quotaStart !quotaStart; } } for (int j needDel.size() - 1; j 0; j--) { int del needDel.get(j); sArr[del] ; for (int i 0; i ranges.length; i) { int start ranges[i][0]; if (del start) { ranges[i][0]--; ranges[i][1]--; } } } StringBuilder tmp new StringBuilder(); for (String s : sArr) { tmp.append(s); } System.out.println(tmp); StringBuilder sb new StringBuilder(); for (Integer[] an : ranges) { sb.append(Arrays.toString(an)); } System.out.println(sb); } }Python算法源码克隆版import copy # 输入获取 s input() arr list(map(lambda x: list(map(int, x.split())), input().split(,))) # 算法入口 def getResult(arr, s): quotaStart False needDel [] for i in range(len(s)): if s[i] and s[i - 1] and i 0 and not quotaStart: needDel.append(i) if s[i] \: quotaStart not quotaStart sArr list(s) ans copy.deepcopy(arr) for d in needDel: sArr[d] for i in range(len(arr)): start arr[i][0] if d start: ans[i][0] - 1 ans[i][1] - 1 print(.join(sArr)) print(.join(list(map(lambda x: str(x), ans)))) # 算法调用 getResult(arr, s)倒序版# 输入获取 s input() arr list(map(lambda x: list(map(int, x.split())), input().split(,))) # 算法入口 def getResult(arr, s): quotaStart False needDel [] for i in range(len(s)): if s[i] and s[i - 1] and i 0 and not quotaStart: needDel.append(i) if s[i] : quotaStart not quotaStart sArr list(s) needDel.reverse() for d in needDel: sArr[d] for i in range(len(arr)): start arr[i][0] if d start: arr[i][0] - 1 arr[i][1] - 1 print(.join(sArr)) print(.join(list(map(lambda x: str(x), arr)))) # 算法调用 getResult(arr, s)

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询