网站建设代码优化汽车美容网站开发

张小明 2025/12/31 22:41:11
网站建设代码优化,汽车美容网站开发,鞍山钟点工招聘信息,湛江建站费用给定一些短词字符串作为分割词#xff0c;去分割一段长字符串。从前往后遍历分割词#xff0c;查找并分割长字符串为对应的token。分词规则如下: 1.优先匹配最长分割词:若多个分割词可匹配同一位置#xff0c;选择长度最长的;长度相同时#xff0c;按字典序较大的优先。 2.…给定一些短词字符串作为分割词去分割一段长字符串。从前往后遍历分割词查找并分割长字符串为对应的token。分词规则如下:1.优先匹配最长分割词:若多个分割词可匹配同一位置选择长度最长的;长度相同时按字典序较大的优先。2.未匹配部分保留原样:无法匹配分割词的部分直接作为独立token输出。3.输出格式:每个token用括号包裹按原字符串顺序输出。输入描述:短词字符串列表每行一个空行后输入待分割的长字符串。输出描述:括号包裹的分词结果如(token1)(token2)示例1:输入:zhong guozhongguowomei guowo ai zhong guo mei guo ye xing输出(wo)(ai)(zhong guo)(mei guo)(ye)(xing)问题分析给定一组分割词和一个长字符串需要按照特定规则将长字符串分割为多个token。规则包括优先匹配最长分割词、字典序排序以及未匹配部分保留原样。输出格式要求用括号包裹每个token。解决思路分割词预处理将分割词按长度从长到短排序长度相同的按字典序降序排列。遍历分割词从长到短依次检查长字符串中是否有匹配的分割词。分割字符串匹配到的部分作为token未匹配的部分保留原样。输出结果将所有token按顺序用括号包裹输出。代码实现以下是Python、C、Java、JavaScript和C语言的实现代码。Python实现def tokenize(segments, text): # 预处理分割词按长度降序长度相同按字典序降序 segments.sort(keylambda x: (-len(x), x), reverseFalse) tokens [] i 0 n len(text) while i n: matched False for seg in segments: seg_len len(seg) if i seg_len n and text[i:iseg_len] seg: tokens.append(seg) i seg_len matched True break if not matched: # 处理未匹配部分按空格分割 if text[i] : i 1 else: j i while j n and text[j] ! : j 1 tokens.append(text[i:j]) i j return tokens # 读取输入 segments [] while True: line input().strip() if line : break segments.append(line) text input().strip() # 分词 tokens tokenize(segments, text) # 输出结果 print(.join(f({token}) for token in tokens))C实现#include iostream #include vector #include algorithm #include string using namespace std; vectorstring tokenize(vectorstring segments, string text) { // 预处理分割词按长度降序长度相同按字典序降序 sort(segments.begin(), segments.end(), [](const string a, const string b) { if (a.length() b.length()) { return a b; } return a.length() b.length(); }); vectorstring tokens; int i 0; int n text.length(); while (i n) { bool matched false; for (const string seg : segments) { int seg_len seg.length(); if (i seg_len n text.substr(i, seg_len) seg) { tokens.push_back(seg); i seg_len; matched true; break; } } if (!matched) { if (text[i] ) { i; } else { int j i; while (j n text[j] ! ) { j; } tokens.push_back(text.substr(i, j - i)); i j; } } } return tokens; } int main() { vectorstring segments; string line; while (getline(cin, line)) { if (line.empty()) { break; } segments.push_back(line); } string text; getline(cin, text); vectorstring tokens tokenize(segments, text); for (const string token : tokens) { cout ( token ); } cout endl; return 0; }Java实现import java.util.*; public class Main { public static ListString tokenize(ListString segments, String text) { // 预处理分割词按长度降序长度相同按字典序降序 segments.sort((a, b) - { if (a.length() b.length()) { return b.compareTo(a); } return Integer.compare(b.length(), a.length()); }); ListString tokens new ArrayList(); int i 0; int n text.length(); while (i n) { boolean matched false; for (String seg : segments) { int segLen seg.length(); if (i segLen n text.substring(i, i segLen).equals(seg)) { tokens.add(seg); i segLen; matched true; break; } } if (!matched) { if (text.charAt(i) ) { i; } else { int j i; while (j n text.charAt(j) ! ) { j; } tokens.add(text.substring(i, j)); i j; } } } return tokens; } public static void main(String[] args) { Scanner scanner new Scanner(System.in); ListString segments new ArrayList(); while (true) { String line scanner.nextLine(); if (line.isEmpty()) { break; } segments.add(line); } String text scanner.nextLine(); ListString tokens tokenize(segments, text); for (String token : tokens) { System.out.print(( token )); } System.out.println(); } }JavaScript实现function tokenize(segments, text) { // 预处理分割词按长度降序长度相同按字典序降序 segments.sort((a, b) { if (a.length b.length) { return b.localeCompare(a); } return b.length - a.length; }); const tokens []; let i 0; const n text.length; while (i n) { let matched false; for (const seg of segments) { const segLen seg.length; if (i segLen n text.substring(i, i segLen) seg) { tokens.push(seg); i segLen; matched true; break; } } if (!matched) { if (text[i] ) { i; } else { let j i; while (j n text[j] ! ) { j; } tokens.push(text.substring(i, j)); i j; } } } return tokens; } // 读取输入 const readline require(readline); const rl readline.createInterface({ input: process.stdin, output: process.stdout }); const segments []; let text ; let isText false; rl.on(line, (line) { if (line ) { isText true; } else if (!isText) { segments.push(line); } else { text line; rl.close(); } }).on(close, () { const tokens tokenize(segments, text); console.log(tokens.map(token (${token})).join()); });C语言实现#include stdio.h #include stdlib.h #include string.h typedef struct { char **segments; int count; } SegmentList; int compare_segments(const void *a, const void *b) { const char *seg_a *(const char **)a; const char *seg_b *(const char **)b; int len_a strlen(seg_a); int len_b strlen(seg_b); if (len_a len_b) { return strcmp(seg_b, seg_a); } return len_b - len_a; } void tokenize(SegmentList *segments, const char *text, char ***tokens, int *token_count) { *tokens NULL; *token_count 0; int i 0; int n strlen(text); while (i n) { int matched 0; for (int j 0; j segments-count; j) { const char *seg segments-segments[j]; int seg_len strlen(seg); if (i seg_len n strncmp(text i, seg, seg_len) 0) { (*token_count); *tokens realloc(*tokens, *token_count * sizeof(char *)); (*tokens)[*token_count - 1] strdup(seg); i seg_len; matched 1; break; } } if (!matched) { if (text[i] ) { i; } else { int j i; while (j n text[j] ! ) { j; } (*token_count); *tokens realloc(*tokens, *token_count * sizeof(char *)); (*tokens)[*token_count - 1] strndup(text i, j - i); i j; } } } } int main() { SegmentList segments; segments.segments NULL; segments.count 0; char line[1024]; while (fgets(line, sizeof(line), stdin)) { line[strcspn(line, \n)] \0; if (line[0] \0) { break; } segments.count; segments.segments realloc(segments.segments, segments.count * sizeof(char *)); segments.segments[segments.count - 1] strdup(line); } fgets(line, sizeof(line), stdin); line[strcspn(line, \n)] \0; const char *text line; qsort(segments.segments, segments.count, sizeof(char *), compare_segments); char **tokens NULL; int token_count 0; tokenize(segments, text, tokens, token_count); for (int i 0; i token_count; i) { printf((%s), tokens[i]); free(tokens[i]); } printf(\n); free(tokens); for (int i 0; i segments.count; i) { free(segments.segments[i]); } free(segments.segments); return 0; }代码说明预处理分割词将分割词按长度和字典序排序确保优先匹配最长且字典序较大的分割词。分割字符串遍历长字符串依次检查是否有匹配的分割词匹配到的部分作为token未匹配的部分按空格分割。输出结果将所有token用括号包裹并按顺序输出。以上代码实现了题目要求的功能适用于多种编程语言。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

贵阳天柱网站建设招聘做编程的网站有哪些方面

Paperzz-AI官网免费论文查重复率AIGC检测/开题报告/文献综述/论文初稿 paperzz - 期刊论文https://www.paperzz.cc/journalArticle 对学术新人而言,期刊论文写作的门槛远高于课程论文 —— 既要贴合期刊的 “选题方向”,又要符合 “摘要 - 引言 - 实证…

张小明 2025/12/29 4:29:45 网站建设

谷歌seo关键词优化搜索引擎seo外包

Excalidraw URL命名规范:清晰且利于SEO 在技术团队日益依赖可视化协作的今天,一张图表往往比千言万语更有效。Excalidraw 作为一款开源、轻量又极具表现力的手绘风格白板工具,已经成为许多工程师绘制架构图、流程图和产品原型的首选。随着 A…

张小明 2025/12/29 4:29:48 网站建设

做网站和网络推广修改wordpress登录路径

目录具体实现截图项目介绍论文大纲核心代码部分展示项目运行指导结论源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作具体实现截图 本系统(程序源码数据库调试部署讲解)同时还支持java、ThinkPHP、Node.js、Spring B…

张小明 2025/12/28 19:22:04 网站建设

有哪些好的响应式网站有哪些免费的个人网站平台

Wan2.2-T2V-A14B与Pika Labs在应用场景上的差异化竞争 你有没有刷到过那种“AI生成”的短视频?一个穿着汉服的少女在樱花雨中转身,镜头缓缓推进——画面流畅、光影自然,几乎看不出是机器造的。这类内容背后,正是文本到视频&#x…

张小明 2025/12/29 4:29:48 网站建设

dedecms仿站行业关键词查询

想要零标注成本实现图像目标计数?X-AnyLabeling结合GeCO模型为您提供了完美的解决方案!作为一款基于AI的智能数据标注工具,X-AnyLabeling通过集成Segment Anything模型和先进的目标计数算法,让复杂场景下的目标统计变得前所未有的…

张小明 2025/12/29 4:29:49 网站建设

专门做钻石国外网站亚马逊中国网站建设目标

SELinux策略中的布尔值、条件策略与对象标签管理 1. 使用Apol检查布尔值和条件策略 Apol是一个非常实用的工具,可用于更轻松地检查条件策略语句以及相关的布尔值。当我们试图理解条件策略语句的影响,或者策略中同一条件多次出现时,Apol的作用尤为明显。 1.1 检查策略中的…

张小明 2025/12/29 4:29:47 网站建设