第五章 字符串专题 ---------------- 5.11 题解:最短摘要的生成

浙江大学pta答案python第四章_浙大PTA-Python题库 编程题第一章(1-1~1-3)题解 其他各章题解链接如下浙大PTA-Python题库 编程题第一章(1-1~1-3)题解https://blog.csdn.net/zimuzi2019/article/details/107020657浙大PTA-Python题库编程题 第二章(2.1~2.14)题解https://blog.csdn.net/zimuzi2019/article/details/106984549浙大PTA-Pyt... 阅读详情

题目:

Alibaba笔试题,给定一段产品的英文描述,包含M个英文单词,每个英文单词以空格分隔,无其他标点符号;再给定N个英文单词关键字,请说明思路并编程实现方法。String extractSummary(String description,String[] key words)目标是找出此产品描述中包含N个关键字(每个关键词至少出现一次)的长度最短的子串,作为产品简介输出。(不限编程语言)20分。

思路一:

直接暴力解法,循环暴力破解,每次判断关键字是否全部包含,然后不断更新边界。

思路二:

先来看看这些序列(w为英文单词,q为关键字):

w0,w1,w2,w3,q0,w4,w5,q1,w6,w7,w8,q0,w9,q1

问题在于,一次性扫描确定边界这不太现实,肯定要多次扫描,不断更新边界,这里只说每个关键字必须要出现一次以上,并没有说要顺序出现。先第一次扫描,扫描到第一个关键字,从第一个位置w0处将扫描到q0处:

w0,w1,w2,w3,q0,w4,w5,q1,w6,w7,w8,q0,w9,q1

然后再从q0处开始扫描,直到出现第一个包含所有关键字的序列,并记录边界:

w0,w1,w2,w3,q0,w4,w5,q1,w6,w7,w8,q0,w9,q1

然后扫描的位置继续往后移动,移动到q1,这样包含的序列中就少了q0,那么就从q1开始扫描,这样就可以找到下一个包含所有关键字的序列,即从q1扫描到了q0处,这儿也要更新边界:

w0,w1,w2,w3,q0,w4,w5,q1,w6,w7,w8,q0,w9,q1

然后,在继续往后扫描,定位到下一个关键字q0,继续往后扫描,如此循环往后扫描,直至扫描完成,那么边界长度就是最小的了。

代码:

import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;

public class 最短摘要 {

    public static void main(String[] args) {
         solve1(new String[]{"a", "b", "c", "seed", "h", "e", "f", "c", "c", "seed", "e", "f", "seed", "c"}, 
                 new String[]{"c", "e"});
         solve2(new String[]{"a", "b", "c", "seed", "c", "e", "f", "c", "c", "seed", "e", "f", "seed", "c"}, 
                 new String[]{"c", "c", "e", "f"});
         solve2(new String[]{"a", "b", "a", "a", "b", "c", "d", "h", "e", "f", "f"}, new String[]{"b", "c", "d"});
    }

    // 暴力破解法
    public static void solve1(String[] w, String[] q) {
        int length = Integer.MAX_VALUE;
        int begin = -1;
        int end = -1;
        for (int i = 0; i < w.length; i++) {
            // 求以i开头包含所有关键字的序列
            for (int j = i+1; j < w.length; j++) {
                // 如果全部关键字已经再seq中。
                if (containsAll(q,w,i,j)) {
                    // 判断当前这个序列是不是较短的序列
                    // System.out.println(seq);
                    if (j-i+1<length) {
                        length = j-i+1;
                        begin = i;
                        end = j;
                    }
                    break;
                }
            }
        }
        print(w,begin,end);
    }
    
    /**
     * 这种解法解决了keys关键字中有重复的现象
     * @param w
     * @param keys
     */
    public static void solve2(String[] w, String[] keys) {
        Arrays.sort(keys);
        // begin和end用于在找到更短的包含全部关键字的子数组时更新
        int begin = -1;
        int end = -1;
        
        int j = -1;  // 上一次囊括了所有关键字的右边界
        
        int minLen = Integer.MAX_VALUE;
        for (int i = 0; i < w.length; i++) {
            // 如果i位置是关键字,求以i开头包含所有关键字的序列
            String word1 = w[i];
            int index = Arrays.binarySearch(keys, word1);
            if (-1==index) {
                continue;
            }else {  // i是一个关键字
                // 如果已经全部找到
                if (j<w.length&&j>=i&&containsAll(keys, w, i, j)) {
                    if (j-i+1<minLen) {  // 更新
                        minLen = j-i+1;
                        begin = i;
                        end = j;
                    }
                    continue;
                }
            }
            
            if (j==-1) {
                j = j+1;   // j值初始化
            }
            while(j<w.length){
                String word2 = w[j];  // 文章单词
                int index1 = Arrays.binarySearch(keys, word2);
                if (-1==index1) {
                    j++;
                    continue;
                }else {  // 找到关键字  这里应该是第一次扫描的包含所有关键字的  然后继续for循环不断更新边界
                    if (containsAll(keys, w, i, j)) { //全部到齐  
                        if (j - i + 1 < minLen) {// 更新
                            minLen = j - i + 1;
                            begin = i;
                            end = j;
                        }
                        break;
                    }else {
                        j++;
                    }
                }
            }
        }
        print(w, begin, end);
    }

    private static boolean containsAll(String[] keywords, String[] w, int i, int j) {
        Map<String, Integer> map = new HashMap<>();
        for (int k = 0; k < keywords.length; k++) {
            String key = keywords[k];
            if (map.get(key)==null) {
                map.put(key, 1);
            }else {
                map.put(key, map.get(key)+1);
            }
        }
        
        Map<String, Integer> map2 = new HashMap<>();
        for (int k = i; k <= j; k++) {
            String key = w[k];
            if (map2.get(key)==null) {
                map2.put(key, 1);
            }else {
                map2.put(key, map2.get(key)+1);
            }
        }
        for(Map.Entry<String, Integer> e:map.entrySet()){
            if (map2.get(e.getKey())==null||map2.get(e.getKey())<e.getValue()) {
                return false;
            }
        }
        return true;
    }

    private static void print(String[] w, int begin, int end) {
        System.out.println(begin+" "+end);
        for (int i = begin; i <=end; i++) {
            System.out.print(w[i]+" ");
        }
        System.out.println();
    }

    

}

结果:

 

C++代码:(没调试成功=。=) 

#include<iostream>
#include<algorithm>
#include<climits>
#include<map>
using namespace std;

template<class T>
int length(T& arr)
{
	return sizeof(arr)/sizeof(arr[0]);
}

bool containAll(string keywords[],string w[],int i,int j,int kl)
{
	map<string,int> mp;
	//len保存keywords长度,避免直接用于for循环时,多次调用,复杂度提高 
	int len=kl;
	for(int k=0;k<len;k++)
	{
		string key=keywords[k];
		if(mp.find(key)==mp.end())
		{
			mp[key]=1;
		}
		else
		{
			mp[key]++;
		}
	}
	map<string,int> mp2;
	for(int k=i;k<=j;k++)
	{
		string key=w[k];
		if(mp2.find(key)==mp2.end())
		{
			mp2[key]=1;
		}
		else
		{
			mp2[key]+=1;			
		}
	}
	
	for(map<string,int>::iterator it=mp.begin();it!=mp.end();it++)
	{		
		if(mp2.find(it->first)==mp2.end()||mp2[it->first]<mp[it->first])
		{
			return false;
		}
	}
	//对于mp中的所有元素,在mp2中都能找到,且value值不少于mp中的value值,则返回true 
	return true;	
}

int strSearch(string s[],string str,int kl)
{
	int l=kl;
	for(int i=0;i<l;i++)
	{
		if(s[i]==str) return 1;
	}
	return 0;
}


//w:要检索的字符串数组; key:要找到关键字 
void solve2(string w[],string keys[],int kl,int wl)
{
	int kLen=kl;
	int wLen=wl;
	
	sort(keys,keys+kLen);
	//begin和end用于在找到更短的包含全部关键字的子数组时更新
	int begin=-1;
	int end=-1;
	
	int j=-1;//上一次囊括了所有关键字的右边界
	
	int minLen=INT_MAX;
	
	for(int i=0;i<wLen;i++)
	{
		// 如果i位置是关键字,求以i开头包含所有关键字的序列
		string word1=w[i];
		//如果在keys中没找到w[i],即,w[i]不是关键字,则continue 
		if(!strSearch(keys,word1,kl))
		{
			continue; 
		}
		else
		{
			//i是一个关键字 
			//如果已经全部找到 
			if(j<wLen&&j>=i&&containAll(keys,w,i,j,kl))
			{
				if(j-i+1<minLen)
				{   //更新 
					minLen=j-i+1;
					begin=i;
					end=j;
				}
				continue;
			}
		}
		if(j==-1)
		{
			j=i+1;//j值初始化 
		}
		while(j<wLen)
		{
			string word2=w[j];
			//word2不是关键字 
			if(!strSearch(keys,word2,kl))
			{
				j++;
				continue;
			}
			// word2是关键字 
			else
			{
				//全部到齐 
				if(containAll(keys,w,i,j,kl))
				{
					if(j-i+1<minLen)
					{
						minLen=j-i+1;
						begin=i;
						end=j;
					}
					break;
				}
				else
				{
					j++;					
				}
			}
		} 
		
	}
	
	//输出最后结果
	for(int i=begin;i<=end;i++)
	{
		cout<<w[i]<<" ";
	} 
	
} 


int main()
{
	string ww[]={"a", "b", "c", "seed", "h", "e", "f", "c", "c", "seed", "e", "f", "seed", "c"};
	string ky[]={"c", "e"};
	int wl=length(ww);
	int kl=length(ky);
	cout<<wl;
	cout<<kl;
	
	solve2(ww,ky,wl,kl);
	
    return 0;
}

 

2022年0701-Com.Java.Basis第六课《主题String》 算法在于自己的实践,在于时间的积累。是一个漫长的过程。我们备战蓝桥杯一个多月的时间,我了解到了只是基础真正的算法高手都在练习算法,因为算法真的能让你的大脑思维提升。这只是我训练的八章成果。算法的在于你要有计算机语言去执行你要实现的功能。面向对象的思维思考问题。...... 阅读详情

相关推荐

实测有效!YOLOv8融合EMA注意力机制后,在无人机航拍目标检测中的性能提升对比

本文详细介绍了YOLOv8融合EMA注意力机制在无人机航拍目标检测中的性能提升效果。通过多尺度特征融合和通道-空间双重注意力机制,EMA模块显著提升了小目标检测的准确率,mAP@0.5平均提升4.2%,同时保持推理速度基本不变。文章还提供了模型定制、训练技巧和实际部署优化的全流程指南。

weixin_33704234的博客 392

[算法系列之二十一]最短摘要的生成

题目描述 你我在百度或谷歌搜索框中敲入本博客名称的前4个字“结构之法”,便能在第一个选项看到本博客的链接,如下图2所示: 图2 谷歌中搜索关键字“结构之法” 在上面所示的图2中,搜索结果“结构之法算法之道-博客频道-优快云.NET”下有一段说明性的文字:“程序员面试、算法研究、编程艺术、红黑树4大经典原创系列集锦与总结 作者:July–结构之法算法…”,我们把这段文字称为那个搜索结果的摘...

SmartSi 583

电机控制——PMSM无感FOC控制(一)FOC入门

FOC 是一种电机控制技术,全称为 Field Oriented Control(磁场定向控制),也称作矢量控制。该技术可以提高电机的效率、控制稳定性和精度,广泛应用于电机驱动系统中,是目前无刷直流电机(BLDC)、永磁同步电机(PMSM)、感应电机的高效控制的最优方法之一。本节主要讲了FOC的大致流程,带大家先了解FOC到底是个什么东西在做什么,各个模块具体的原理会放到后面的章节详细讲解。FOC其实就是通过控制,相电流按照正弦变化,从而产生出旋转的磁场,控制电机转子转动。

zhuxinmingde的博客 2634

编程之美---最短摘要的生成

题目背景:互联网搜索以及成为了大家工作和生活的一部分。在输入一些关键词之后,搜索引擎会返回许多结果,每个结果都包含一段概括网页内容的摘要。例如,再www.live.com中搜索“微软亚洲研究院 使命“,第一个结果是微软亚洲研究院的首页,如图 3-7所示。 再搜索结果中,标题和URL之间的内容就是我们所说的摘要: 假设给定的已经是经过网页分词之后的结果,词语序列数组为W。其中W[0],W[1]....W[N]为一些已经分好的词语。 假设用户输入的搜索关键词为数组Q。其中Q[0],Q[1]....

qq_61185410的博客 537

数字IC后端设计实现 | PR工具中到底应该如何控制density和congestion?(ICC2&Innovus)

数字IC后端设计实现中到底应该如何控制cell density和congestion?(ICC2和Innovus两种解决方案)

weixin_37584728的博客 7113

CVE-2021-3156本地提权漏洞复现

受影响版本 sudo: 1.8.2 - 1.8.31p2 sudo: 1.9.0 - 1.9.5p1 测试 我这里是在本地centos7上进行测试。 需要目标机器上存在python编译器、目标主机出网或者能上传文件到目标主机。 以非root用户登录系统,并运行如下命令: sudoedit -s / 通常响应一个以 sudoedit: / 开头的报错,多半存在漏洞。 利用 提权脚本: https://www.o2oxy.cn/wp-content/uploa

The current road is different, love needs to distinguish between right and wrong 3782

编程之美——最短摘要的生成

编程之美——最短摘要的生成 题目:     最短摘要的生成,具体见《编程之美》这本书。 分析:     先来看看这些序列: w0,w1,w2,w3,q0,w4,w5,q1,w6,w7,w8,q0,w9,q1      问题在于,如何一次把所有的关键词都扫描到,并且不遗漏。扫描肯定是无法避免的,但是如何把两次扫描的结果联系起来呢?这是一个值得考虑的问题。

chenglinhust的专栏 1303

华为OD机试 - 打印机队列 - 优先队列(Python/JS/C/C++ 双机位C卷 200分)

这个问题要求模拟打印机的文件调度过程,关键在于正确处理每个打印机队列中的文件优先级和文件进入队列的顺序。优先级处理:每个文件有一个 1 到 10 的优先级,数字越大优先级越高,打印机应首先处理优先级最高的文件。在打印机 1 的队列中插入了 3 个文件,分别有不同的优先级,其中编号 3 的文件优先级最高,先被取出。因为打印的文件内容有轻重缓急之分,所以队列中的文件有1~10 不同的 优先级,其中数字越大优先级越高。在打印机 2 的队列中插入了 1 个文件,优先级为 1,因此它被首先取出。

学Java,找哪吒 1079

最短摘要生成

1、问题描述 互联网搜素已经成了我们生活和工作的一部分,在输入一些关键词之后,搜索引擎会返回许多结果,每个结果都包含一段概括网页内容的摘要。例如,在百度上搜索框中输入“图的最小生成树 - heart_love”,将会显示如下内容: 在搜索结果中,标题和URL之间的内容就是我们所说的摘要。这些摘要是怎么样生成的呢?我们对问题做如下简化。 给定一段描述w和一组关键字q,我们从这段描述中找

heart_love的博客 2549

Python与ArcGIS系列(二)获取地图文档

在ArcPy中,要引用当前的地图文档(Map Document),可以使用 mapping 模块中的 MapDocument 类。值得注意的是,在arcgis内部python窗口运行该代码才能访问已加载进arcgis的文档,如果通过其他idle则无法访问。要引用磁盘上的地图文档并对其进行一些设置,同样可以使用ArcPy中的 mapping 模块和 MapDocument 类。对于我们平常的工作,接触最多的就是图层数据处理,获取图层后就可以方便地进行下一步处理。

weixin_43894929的博客 2200

ArtMate —— 美术公开课智能体开发全记录

本文档详细描述了一款专为中小学美术公开课设计的智能教学助手的开发过程。该智能体融合了多模态感知、自然语言交互、风格迁移与智能评价等技术,旨在辅助教师开展生动、高效的美术鉴赏与创作课程。全文包含需求分析、系统架构设计、核心模块代码实现、交互界面搭建及完整运行示例,并配有详尽的行内注释和设计思想阐述,为教育技术开发者提供一份可落地、可扩展的参考方案。

huanghm88的专栏 153

最短摘要的生成

Alibaba笔试题: 给定一段产品的英文描述,包含M个英文字母,每个英文单词以空格分隔,无其他标点符号;再给定N个英文单词关键字,请说明思路并编程实现方法String extractSummary(String description,String[] keywords),目标是找出此产品描述中包含N个关键字(每个关键词至少出现一次)的长度最短的子串,作为产品简介输出。 这个问题和编程之美3

马靖的个人技术博客 1665

stm32项目实战(1)光敏电阻的介绍和使用

文章目录前言一、光敏电阻介绍二、cubeMX配置三、代码说明总结 前言 本篇文章我们讲带大家了解光敏电阻的使用 一、光敏电阻介绍 下面是4线光敏电阻实物图 产品接线说明: 1、VCC 接电源正极 3.3-5V 2、GND 接电源负极 3、DO TTL 开关信号输出 (配置为输出模式) 4、AO 模拟信号输出(ADC采样通道) 光敏电阻主要用于检测周围的光照强度,光照强度发生变化那么ADC采样的值也会发送变化。 二、cubeMX配置 简单的配置我们就不多说了主要是ADC采样的配置 这里我采用的是ADC1通道

m0_49476241的博客 1万+

浙大PTA-Python题库 编程题第五章(5-1~5-11)题解

题目列表 5-1 输出星期名缩写 输入一个1到7的数字,输出对应的星期名的缩写。 1 Mon 2 Tue 3 Wed 4 Thu 5 Fri 6 Sat 7 Sun 输入格式: 输入1到7之间数字 输出格式: 输出对应的星期名的缩写 输入样例: 在这里给出一组输入。例如: 1 输出样例: 在这里给出相应的输出。例如: Mon 题解 daysdict={1:"Mon",2:"Tue",3:"Wed",4:"Thu",5:"Fri",6:"Sat",7:"Sun"} print(daysdict[eval

zimuzi2019的博客 3万+

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

浙大PTA-Python题库 编程题第三章(3-1~3-22)题解

其他各章题解链接如下 浙大PTA-Python题库 编程题第一章(1-1~1-3)题解 https://blog.csdn.net/zimuzi2019/article/details/107020657 浙大PTA-Python题库编程题 第二章(2.1~2.14)题解 https://blog.csdn.net/zimuzi2019/article/details/106984549 浙大PTA-Python题库 编程题第三章(3-1~3-22)题解 https://blog.csdn.net/zimu

zimuzi2019的博客 7万+

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

day11第五章 栈与队列part02

● 20. 有效的括号 ● 1047. 删除字符串中的所有相邻重复项 ● 150. 逆波兰表达式求值

m0_72126063的博客 268

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

浙大PTA-Python题库 编程题第一章(1-1~1-3)题解

题目列表 1-1 从键盘输入两个数,求它们的和并输出 本题目要求读入2个整数A和B,然后输出它们的和。 输入格式: 在一行中给出一个被加数 在另一行中给出一个加数 输出格式: 在一行中输出和值。 输入样例: 在这里给出一组输入。例如: 18 -48 输出样例: 在这里给出相应的输出。例如: -30 题解 print(eval(input()+'+'+input())) 1-2 从键盘输入三个数到a,b,c中,按公式值输出 在同一行依次输入三个值a,b,c,用空格分开,输出 b* b-4 * a *

zimuzi2019的博客 2万+

浙大PTA-Python题库 编程题第四章(4-1~4-30)题解

其他各章题解链接如下 浙大PTA-Python题库 编程题第一章(1-1~1-3)题解 https://blog.csdn.net/zimuzi2019/article/details/107020657 浙大PTA-Python题库编程题 第二章(2.1~2.14)题解 https://blog.csdn.net/zimuzi2019/article/details/106984549 浙大PTA-Python题库 编程题第三章(3-1~3-22)题解 https://blog.csdn.net/zimu

zimuzi2019的博客 7万+

【剑指offer】(第 2 版)Java 题解

【剑指offer】(第 2 版)Java 题解 第一章 面试的流程 略... 第二章 面试需要的基础知识 面试题 1. 赋值运算符函数 面试题 2. 实现 Singleton 模式 Solution 2 面试题 3. 数组中重复的数字 题目一:找出数组中重复的数字。 题目二:不修改数组找出重复的数字。 面试题 4. 二维数组中的查找 Solution 4 面试题 5. 替换空格 Solution ...

weixin_30873847的博客 206

代码随想录算法训练营第11天 | ● 20. 有效的括号 ● 1047. 删除字符串中的所有相邻重复项 ● 150. 逆波兰表达式求值

题目链接/文章讲解/视频讲解:https://programmercarl.com/0020.%E6%9C%89%E6%95%88%E7%9A%84%E6%8B%AC%E5%8F%B7.html。使用栈的可以另外定义新的返回字符串,因为已经用了O(N)空间的栈,所以空间利用都差不多。【第一想法与实现(困难)】直接实现一个栈,发现需要考虑的边界情况较多,代码稍长,不易理解。本题不难,但第一次做的话,会很难想到,所以先看视频,了解思路再去做题。讲完了栈实现队列,队列实现栈,接下来就是栈的经典应用了。

henry87653的博客 245

python画分段函数_两道matlab问题,都答对追分matlab答案第五章

两道matlab问题,都答对追分 matlab答案第五章www.zhiqu.org 时间: 2020-11-23题一:T=[88,224.7,365.3,687,4331.8,10760,30684,60188.3];R3_2=[440.9702,1125.885,1830.965,3445.404,21724.73,54019.8,151317.1,301028];plot(R3_2,...

weixin_39956451的博客 506

浙大PTA-Python题库 编程题第六章(6-1~6-8)题解

题目列表 6-1 输入列表,求列表元素和(eval输入应用) 在一行中输入列表,输出列表元素的和。 输入格式: 一行中输入列表。 输出格式: 在一行中输出列表元素的和。 输入样例: [3,8,-5] 输入样例: 6 题解 print(sum(eval(input()))) 6-2 一帮一 “一帮一学习小组”是中小学中常见的学习组织方式,老师把学习成绩靠前的学生跟学习成绩靠后的学生排在一组。本题就请你编写程序帮助老师自动完成这个分配工作,即在得到全班学生的排名后,在当前尚未分组的学生中,将名次最靠前的

zimuzi2019的博客 2万+

python输入列表求列表元素和(eval的运用)_浙大PTA-Python题库 编程题第六章(6-1~6-8)题解...

其他各章题解链接如下浙大PTA-Python题库 编程题第一章(1-1~1-3)题解https://blog.csdn.net/zimuzi2019/article/details/107020657浙大PTA-Python题库编程题 第二章(2.1~2.14)题解https://blog.csdn.net/zimuzi2019/article/details/106984549浙大PTA-Pyt...

weixin_39713763的博客 750

C 程序设计(第五版) 书后题解(仅供参考)

文章目录第一章 程序设计和C语言1 概念2 特点3 理解含义4 Hello 程序5 特殊图案6 三者最大值7 省第二章 算法——程序的灵魂1 算法2 结构化的算法3 三种基本结构4 传统流程图5 N-S图6 伪代码7 结构化程序设计8 自顶向下第三章 顺序程序设计1 简单公式计算年利率2 不同存款方式的利息3 贷款买房4 超存储界限,发生阶段5 输入问题6 简单加密输出7 圆 球相关计算8 字符第四章 选择结构1 运算概念2 真假表示3 逻辑表达式的值4 三者最大5 按整求平方根6 分段函数

随便写写 3140

《信息学奥赛一本通编程启蒙(C++版)》题库题解

《信息学奥赛一本通编程启蒙(C++版)》题库题解

青少年趣味编程 3046

楚狂人--驱动开发基础

本书非常适合熟悉Windows应用编程的读者转向驱动开发。所有的内容都从最基础的编程方法入手。介绍相关的内核API,然后举出示范的例子。这本书只有不到70页,是一本非常精简的小册子。所以它并不直接指导读者开发某种特定类型的驱动程序。而是起到一个入门指导的作用http://www.mayipe.com。 即使都是使用C/C++语言的代码,在不同的应用环境中,常常看起来还是大相径庭。比如用Turbo

一介码农,热爱金融。 4528
上一篇: 第五章 字符串专题 ---------------- 5.10 题解:神奇的回文串
下一篇: 第五章 字符串专题 ---------------- 5.12 字符串匹配之PabinKarp
Estrellas_
博客等级 码龄9年 273粉丝 233原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值